Как я могу определить доступность экземпляра MemberInfo? - PullRequest
8 голосов
/ 14 октября 2010

Я знаю, что BindingFlags используются для получения открытых и непубличных членов из Типа.

Но есть ли способ определить, является ли экземпляр MemberInfo (или производным от PropertyInfo, MethodInfo) общедоступным или нет (после того, как он был возвращен одним из методов типа)?

Thanx, Марк

1 Ответ

7 голосов
/ 14 октября 2010

PropertyInfo, MethodBase и т. Д. У каждого есть свойство Attributes, которое содержит эту информацию - но в MemberInfo ничего нет, потому что каждый тип члена имеет свой собственный тип перечисления атрибутов. Отвратительно, я думаю, вам может необходимо обработать каждый подкласс MemberInfo отдельно :( Возможно, вы можете включить MemberInfo.MemberType и затем выполнить приведение, которое будет немного лучше, чем множество ветвей as / test-for-null, но все равно не идеально: (

if (member.MemberType == MemberTypes.Property)
{
    var property = (PropertyInfo) member;
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...