如果我有如下C#类MyClass
:如何查找C#类的内部属性?保护?保护内部?
using System.Diagnostics;
namespace ConsoleApplication1
{
class MyClass
{
public int pPublic {get;set;}
private int pPrivate {get;set;}
internal int pInternal {get;set;}
}
class Program
{
static void Main(string[] args)
{
Debug.Assert(typeof(MyClass).GetProperties(
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance).Length == 1);
Debug.Assert(typeof(MyClass).GetProperties(
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance).Length == 2);
// internal?
// protected?
// protected internal?
}
}
}
上述编译代码是没有任何断言失败运行。 NonPublic返回内部和私有属性。在BindingFlags上似乎没有其他辅助功能类型的标志。
如何获得只有内部属性的列表/数组?在相关说明中,但对我的应用程序来说不是必需的,那么受保护或受保护的内部呢?
另一个选择是调用propertyInfo.GetGetMethod(true)。即propertyInfo.GetGetMethod(true).IsPrivate。另外请注意,我必须像这样调用GetProperties才能使其工作GetProperties(BindingFlags.NonPublic | BindingFlags.Instance); GetProperties(BindingFlags.NonPublic)本身不起作用 – cgotberg
@cgotberg是的,我编辑了我的答案以使用'true'参数。否则,它不会给你非公开的访问者。谢谢。 –