我在程序集中有很多类,我不能或不想修改。在运行时的某个时刻,我想知道其中的哪些已被“初始化”:静态初始化程序(=静态构造函数)已运行。
有没有办法通过反射或其他方式做到这一点?
有关信息,并非在加载程序集时初始化程序集中的每个类。可以通过以下代码轻松观察到这一点:
public static class Foo
{
static Foo() { MainClass.Value = "Something"; }
public static void DoSomething() { Thread.Sleep(100); }
}
public static class MainClass
{
public static string Value = "Nothing";
public static void Main()
{
Console.WriteLine(Value);
Foo.DoSomething();
Console.WriteLine(Value);
}
}
显示:
Nothing
Something
答案 0 :(得分:0)
在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。
因此,您需要使用一次类,属性,方法等等来对其进行初始化...您无法控制它,无法以编程方式调用它,并且如果您想知道静态构造函数已被使用,您将使用该类,因此可以在此时调用它。
如Rango所述,如果您确实需要了解...
,则可以在构造函数中使用标志。