2008-10-15 3 views
1

Есть ли способ получить пользовательские атрибуты определенного объекта, который я получаю в методе?Получить пользовательские атрибуты определенного члена

Я не хочу и не могу перебирать 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) 

} 

ответ

2

No. объекты не имеют атрибутов - члены делать. К тому времени, когда вы находитесь в методе «Do», нет записи о том, что вы вызвали Do (MyObject) и Do (MyOtherFieldWhichHasTheSameValue).

Если вам нужно найти атрибуты для члена, вам в основном нужно будет перейти в соответствующую учетную запись MemberInfo, а не то, что она оценивает.

+0

Я думал об этом, но также надеялся, что есть умный способ получить атрибуты. Благодарю. – 2008-10-15 13:11:36

1

Вы не можете сделать это, не менее 1 разговора. После этого сохраните значение как-то.

Пример:

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

[Name("Foo")] 
class MyClass : MyBase 
{ 
} 
Смежные вопросы