如何在C#Reflection中列出当前类的字段(this.GetType()的问题)?

use*_*291 4 .net c# reflection

这被编译器接受:

FieldInfo[] fieldInfos;
fieldInfos = typeof(MyClass).GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)

编译器不接受此操作:

FieldInfo[] fieldInfos;
fieldInfos = typeof(this.GetType()).GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)

如何修复第二种语法?

Mat*_*nen 9

你不需要typeof()围绕一个GetType调用,因为它已经返回一个类型的对象.typeof是一种特殊的语法,用于Type从类型名称中获取对象,而不必执行类似的操作Type.GetType("Foo").

FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic |
                                 BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)