Я написал некоторый код для рассмотрения свойств с помощью отражения. Я получил список свойств от класса с помощью отражения.
Однако я должен узнать, является ли собственность общественной или защищена. например:
public string Name{get;set;}
protected int Age{get;set;}
Класс PropertyInfo, кажется, не выставляет эту информацию о свойстве. Там другой путь состоит в том, чтобы сделать это?
Поскольку свойства - это просто синтаксический сахар над парой методов get
/ set
, существует нет такой вещи, как "доступность" свойства с точки зрения отражения. Скорее, вам нужно будет узнать уровни доступности методов get
и set
отдельно. Для этого получите соответствующие объекты MethodInfo
с помощью методов GetGetMethod
и GetSetMethod
, а также различных методов IsPrivate
, IsPublic
и другие методы и свойства.
Вам нужно посмотреть на methodInfo каждого метода get и set например:
PropertyInfo pi = ...;
bool isPublic = pi.GetGetMethod(true).IsPublic;
bool isProtected= pi.GetGetMethod(true).IsFamily;
Похоже, это свойство IsFamily, которое указывает если метод защищен ..