سؤال

هل هناك أي طريقة للحصول على سمات مخصصة لكائن معين أتلقى في طريقة؟

وأنا لا أريد ولا يمكن تكرار على Type.GetMembers () والبحث عن عضو بلدي. لدي الكائن، والذي هو أيضا عضو يحتوي على السمة.

وكيف يمكنني الحصول على سمة؟

class Custom
{
    [Availability]
    private object MyObject = "Hello";

    private void Do(object o)
    {
        //does object 'o' has any custom attributes of type 'Availability'?
    }

    //somewhere I make the call: Do(MyObject)

}
هل كانت مفيدة؟

المحلول

ولا. كائنات لا تملك سمات - أعضاء تفعل. بحلول الوقت الذي كنت في طريقة "دو"، وليس هناك سجل من حقيقة أنك دعا دو (MyObject) مقابل دو (MyOtherFieldWhichHasTheSameValue).

إذا كنت في حاجة للبحث عن سمات على عضو، سيكون لديك أساسا لتمرير في و memberinfo ذات الصلة، وليس ما يحدث ذلك لتقييم ل.

نصائح أخرى

وأنت لا تستطيع أن تفعل ذلك دون دعوة انعكاس 1 على الأقل. بعد ذلك، حفظ القيمة بطريقة أو بأخرى.

مثال:

abstract MyBase
{
  public string Name;
  protected MyBase()
  {
    //look up value of Name attribute and assign to Name
  } 
}

[Name("Foo")]
class MyClass : MyBase
{
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top