我知道BindingFlags用于从Type中获取公共(public)和非公共(public)成员。

但是,是否有一种方法可以确定MemberInfo实例(或从PropertyInfo,MethodInfo派生而来)是否是公共(public)的(从Type的一种方法返回之后)?

谢谢
马克

最佳答案

PropertyInfoMethodBase等每个都有一个Attributes属性,该属性具有此信息-但MemberInfo中没有任何内容,因为每种成员都有其自己的属性enum。尽管这很可怕,但我认为您可能需要分别对待MemberInfo的每个子类:(您可能可以打开 MemberInfo.MemberType 然后进行强制转换,这比许多as/test-for-null分支要好一些,但仍然没有理想的 :(

if (member.MemberType == MemberTypes.Property)
{
    var property = (PropertyInfo) member;
    ...
}

10-06 12:05