如何查找C#类的内部属性?保护?保护内部?如果我有一个C#类MyClass如下:usingSystem.Diagnostics;命名空间ConsoleApplication1{classMyClass{publicintpPublic{get;set;}privateintpPrivate{get;set;}internalintpInternal{get;set;}}classProgram{staticvoidMain(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);//内部的?//保护?//受保护的内部?}}}上面的编译代码是没有任何断言失败的运行。NonPublic返回内部和私有属性。其他帮助程序类型似乎在BindingFlags上没有标志。如何获得仅包含内部属性的列表/数组?在相关说明中,但对我的应用程序来说不是必需的,受保护或受保护的内部怎么样?当您使用BindingFlags.NonPublic获取属性信息时,您可以分别使用GetGetMethod(true)和GetSetMethod(true)找到getter或setter。然后您可以检查以下属性(方法信息)以获得准确的访问级别:当然,GetSetMethod(true)也是GetSetMethod(true)。请记住,让其中一个访问器(getter或setter)比另一个更受限制是合法的。如果只有一个访问器,那么它的可访问性就是整个属性的可访问性。如果两个访问器都存在,最简单的访问器将为您提供整个属性的可访问性。使用propertyInfo.CanRead查看是否可以调用propertyInfo.GetGetMethod,使用propertyInfo.CanWrite查看是否可以调用propertyInfo.GetSetMethod。如果访问器不存在(或者如果它是非公共的并且您要求公共GetGetMethod,并且在reflectionAPI中不使用。IL中对应的术语是Family和Assembly。要标识一个使用反射的内部方法,使用IsAssembly属性。要标识一个受保护的内部方法,使用IsFamilyOrAssembly。和System.Reflection.BindingFlags。GetProperties的NonPublic标志返回所有这些:private,internal,protected,protectedinternal以上是C#学习教程:HowtofindtheinternalpropertiesofaC#class?Protected?Protectedinternal?分享所有内容,如果是对大家有用和需要了解更多C#学习教程,希望大家多加关注~本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除它。如需转载请注明出处:
