Получить CustomAttributes конкретного члена - PullRequest
1 голос
/ 15 октября 2008

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

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

2 голосов
/ 15 октября 2008

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

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

1 голос
/ 15 октября 2008

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

Пример:

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

[Name("Foo")]
class MyClass : MyBase
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...