gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:16:22 24 4
gpt4 key购买 nike

我正在尝试列出 Item 可能包含的类型。但是,我无法调用 Item.GetType() 来遍历它的属性,因为这只会返回它已经包含的类型的属性。

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

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

    [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;
}
}

最佳答案

您不能为此使用 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));

关于c# - 使用反射获取单个属性的每个 XmlElementAttribute 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com