Я работал с 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;}
}
}
}