Как получить значение атрибута - PullRequest
7 голосов
/ 02 августа 2010

У меня есть этот код:

[MyAttribute(CustomAttribute="Value")]
class MyClass
{
    // some code
}


Main()
{
    MyClass a = new MyClass();
}

Как получить значение CustomAttribute, например, а?

Ответы [ 3 ]

3 голосов
/ 02 августа 2010

В следующих строках:

MyAttribute [] myAttributes 
  = (MyAttribute [])a.GetType().GetCustomAttributes(typeof(MyAttribute),true);

Не могу понять, что вы подразумеваете под «без использования foreach», за исключением того, что GetCustomAttributes всегда возвращает их массив (чтобы учесть наличие нескольких атрибутов).Если вы знаете, что может быть только один, просто используйте первый.

MyAttribute theAttrib = myAttributes[0];
Console.WriteLine(theAttrib.CustomAttribute);
3 голосов
/ 02 августа 2010

Здесь есть хороший пример:

http://msdn.microsoft.com/en-us/library/z919e8tw.aspx

Чтобы сделать это без foreach, вы должны предположить, что к типу не применяются другие атрибуты, и индексироватьпервый атрибут напрямую.

1 голос
/ 02 августа 2010
var attribs = (MyAttributeAttribute[]) typeof(MyClass).GetCustomAttributes(
    typeof(MyAttributeAttribute), 
    true);

Console.WriteLine(attribs[0].CustomAttribute); // prints 'Value'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...