使用反射获取单个属性的XmlElementAttribute的每个实例

本文关键字:XmlElementAttribute 实例 属性 反射 获取 单个 | 更新日期: 2023-09-27 18:10:55

我正在尝试列出Item可能包含的可能类型。然而,我被困在,我不能调用Item.GetType()来循环它的属性,因为这只会返回它已经包含的类型的属性。

我已经尝试过TypeDescriptor.GetProperties(…),但属性容器只包含一个实例XmlElementAttribute这是最后一个应用到属性(WindowTemplate在这种情况下)

这肯定是微不足道的,但我在网上找不到任何解决我的问题的方法。

    [System.Xml.Serialization.XmlElementAttribute("ChildTemplate", typeof(ChildTmpl), Order = 1)]
    [System.Xml.Serialization.XmlElementAttribute("WindowTmeplate", typeof(WindowTmpl), Order = 1)]
    public object Item
    {
        get
        {
            return this.itemField;
        }
        set
        {
            this.itemField = value;
        }
    }

使用反射获取单个属性的XmlElementAttribute的每个实例

你不能使用TypeDescriptor作为System。ComponentModel总是折叠属性。必须使用PropertyInfoAttribute.GetCustomAttributes(property, attributeType):

var property = typeof (Program).GetProperty("Item");
Attribute[] attribs = Attribute.GetCustomAttributes(
       property, typeof (XmlElementAttribute));

数组将实际上是一个XmlElementAttribute[],如果它使它更容易:

XmlElementAttribute[] attribs = (XmlElementAttribute[])
     Attribute.GetCustomAttributes(property, typeof (XmlElementAttribute));
相关文章:
  • 没有找到相关文章