2010-08-02 2 views

ответ

3

Вдоль линии:

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

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

MyAttribute theAttrib = myAttributes[0]; 
Console.WriteLine(theAttrib.CustomAttribute); 
+0

«Не понимает, что вы имеете в виду„без использования Еогеаспа“» -> я нахожу некоторые плохие примеры, которые используют Еогеасп читать все атрибуты дорожат – Dusan

+0

Да, но плохие примеры только что - примеры - вы должны взять знания, которые они дают, и использовать их, как вы считаете нужным. – Jamiec

3

Существует хороший пример здесь:

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

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

1
var attribs = (MyAttributeAttribute[]) typeof(MyClass).GetCustomAttributes(
    typeof(MyAttributeAttribute), 
    true); 

Console.WriteLine(attribs[0].CustomAttribute); // prints 'Value' 
Смежные вопросы