2012-02-29 2 views
3

Внутри класса, я следующий кусок кода:Просмотр/Получение атрибутов

/// <remarks/> 
[System.Xml.Serialization.XmlElementAttribute("Errors", typeof(ErrorsType))] 
[System.Xml.Serialization.XmlElementAttribute("Success", typeof(SuccessType))] 
[System.Xml.Serialization.XmlElementAttribute("Warnings", typeof(WarningsType))] 
public object[] Items { 
    get { 
     return this.itemsField; 
    } 
    set { 
     this.itemsField = value; 
    } 
} 

Используя только отражение, можно ли получить эти атрибуты? Я увидел 'GetCustomAttributes() на соответствующем Type, но не получил много радости.

ответ

4

Вам нужно получить атрибуты из собственности, а не сам тип, например, так:

typeof(MyClass).GetProperty("Items").GetCustomAttributes(typeof(XmlElementAttribute), false); 

Или более полное (не забудьте импортировать System.Linq для Cast <> и ToArray() работать) :

XmlElementAttribute[] attribs = typeof(TheType) 
        .GetProperty("Items") 
        .GetCustomAttributes(typeof(XmlElementAttribute), false) 
        .Cast<XmlElementAttribute>() 
        .ToArray(); 
Смежные вопросы