Обнаружьте тип модификатора доступа на свойстве с помощью Отражения

Я написал некоторый код для рассмотрения свойств с помощью отражения. Я получил список свойств от класса с помощью отражения.

Однако я должен узнать, является ли собственность общественной или защищена. например:

public string Name{get;set;}
protected  int Age{get;set;}

Класс PropertyInfo, кажется, не выставляет эту информацию о свойстве. Там другой путь состоит в том, чтобы сделать это?

18
задан T.Todua 25 May 2019 в 08:26
поделиться

2 ответа

Поскольку свойства - это просто синтаксический сахар над парой методов get / set , существует нет такой вещи, как "доступность" свойства с точки зрения отражения. Скорее, вам нужно будет узнать уровни доступности методов get и set отдельно. Для этого получите соответствующие объекты MethodInfo с помощью методов GetGetMethod и GetSetMethod , а также различных методов IsPrivate , IsPublic и другие методы и свойства.

26
ответ дан 30 November 2019 в 07:03
поделиться

Вам нужно посмотреть на methodInfo каждого метода get и set например:

PropertyInfo pi = ...;
bool isPublic = pi.GetGetMethod(true).IsPublic;
bool isProtected= pi.GetGetMethod(true).IsFamily;

Похоже, это свойство IsFamily, которое указывает если метод защищен ..

9
ответ дан 30 November 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: