我一直在使用 Reflections,并希望获得为属性声明的所有属性。PropertInfo
类下有两个属性是CustomAttributes
和Attributes
。
根据MSDN,它们解释如下:
属性:
此属性表示与成员关联的属性。所有成员都有一组属性,这些属性是针对特定类型的成员定义的。属性属性让用户知道此属性是默认属性、SpecialName 属性等。
注意:页面中给出的代码示例PropertyInfo.Attributes
甚至不起作用。
自定义属性:
包含应用于此成员的所有自定义属性的数组,如果未定义任何属性,则为包含零元素的数组。
但是,当我为他们运行此代码时,Attributes
返回时什么也不CustomAttributes
返回Required
。
void Main()
{
var attributes = typeof(Myproperty).GetProperty("Caption").CustomAttributes;
//var attributes = typeof(Myproperty).GetProperty("Caption").Attributes;
attributes.Dump(); //Dump is a LinqPad method which dumps everything to the outpu window
}
public class Myproperty
{
private string caption = "Default caption";
[Required]
public string Caption
{
get{return caption;}
set {if(caption!=value) {caption = value;}
}
}
}