eya*_*yal 4 .net reflection enums
GetFields()枚举类型时,我得到一个类型为int32的额外字段.它从哪里来的?? (GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static) ),它返回所需的字段.这是否意味着枚举的字段不是公共的? 谢谢
反射器 IL Spy可以解释这一点.
看看反编译的枚举,你会看到如下所示:
.class public auto ansi sealed ConsoleApplication1.Foo
extends [mscorlib]System.Enum
{
// Fields
.field public specialname rtspecialname int32 value__
.field public static literal valuetype ConsoleApplication1.Foo Bar = int32(0)
.field public static literal valuetype ConsoleApplication1.Foo Baz = int32(1)
} // end of class ConsoleApplication1.Foo
Run Code Online (Sandbox Code Playgroud)
即Fooenum被实现为一个密封的类,它包含一个int32被调用的value__- 你正在看到的额外字段.
值得注意的是,它还继承了System.Enum其中还有额外的(静态)字段.