我正在收集放置在属性上的所有自定义属性。有多个相同类型的属性分配给该属性,但是在收集它们时,结果集合仅包含特定类型的第一个属性:
属性类
[AttributeUsage(System.AttributeTargets.Property,
AllowMultiple = true)]
public class ConditionAttribute : Attribute{...}
Usage:
[ConditionAttribute("Test1")]
[ConditionAttribute("Test2")]
[ConditionAttribute("Test3")]
public Color BackColor{get; set;}
现在,当循环遍历类包含 Prop“BackColor”的对象“value”的所有 Prop 时:
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(value))
{
foreach (Attribute attribute in property.Attributes)
{ ... }
....
}
集合属性.属性仅包含“ConditionAttribute”类型的一个属性:带有“Test1”的属性。其他的被忽略;-(
那么AllowMultiple对Property Attributes不起作用吗?
提前致谢
henrik
根据MSDN 上的帖子 http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/e6bb4146-eb1a-4c1b-a5b1-f3528d8a7864,这是设计为 PropertyDescriptor 类的一部分。
但是,您实际上可以通过覆盖自定义属性中的 TypeId 来解决问题(感谢Mindscape 的伊万 http://www.mindscape.co.nz/forums/Thread.aspx?ThreadID=2323指出这一点):
public override object TypeId
{
get
{
return this;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)