在课堂上,我有以下代码:
/// <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
,但没有太多的快乐。
答案 0 :(得分:4)
您需要从属性中检索属性,而不是类型本身,如下所示:
typeof(MyClass).GetProperty("Items").GetCustomAttributes(typeof(XmlElementAttribute), false);
或者更完整(记得导入Cast&lt;&gt;和ToArray()的System.Linq工作):
XmlElementAttribute[] attribs = typeof(TheType)
.GetProperty("Items")
.GetCustomAttributes(typeof(XmlElementAttribute), false)
.Cast<XmlElementAttribute>()
.ToArray();