使用Reflection在对象初始化之前设置静态变量值?

Cha*_*nce 24 c# reflection system.reflection c#-2.0

无论如何设置尚未初始化的对象上的静态(私有)变量的值?该SetValue方法需要一个实例,但我希望有办法解决这个问题.

Jar*_*Par 48

对于静态值,您可以为实例参数传递null.

var type = typeof(SomeClass);
var field = type.GetField("SomeField", BindingFlags.NonPublic | BindingFlags.Static);
field.SetValue(null, 42);
Run Code Online (Sandbox Code Playgroud)

  • +1.我认为对于私有静态,你需要一些BindingFlags作为GetField方法的第二个参数.BindingFlags.Static | BindingFlags.NonPublic (5认同)