如何获取静态构造函数的 ConstructorInfo
?
public class MyClass
{
public static int SomeValue;
static MyClass()
{
SomeValue = 23;
}
}
我尝试了以下但失败了......
Type myClass = typeof (MyClass);
// throws exception
myClass.TypeInitializer.Invoke(null);
// returns null (also tried deleting BindingFlags.Public
ConstructorInfo ci = myClass.GetConstructor(
BindingFlags.Static | BindingFlags.Public,\
System.Type.DefaultBinder,
System.Type.EmptyTypes,
null);
// returns empty array
ConstructorInfo[] clutchingAtStraws = myClass.GetConstructors
(BindingFlags.Static | BindingFlags.Public);
最佳答案
还有System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(RuntimeTypeHandle type)
,它还保证静态构造函数只被调用一次,而不管该方法被调用了多少次:
Type myClass = typeof(MyClass);
System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(myClass.TypeHandle);
关于c# - 如何使用反射调用静态构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524906/