【发布时间】:2011-05-28 05:56:14
【问题描述】:
我在各种类的静态构造函数中有一些初始化代码。我无法创建实例,也无法提前知道类型。我想确保已加载类。
我试过了:
fooType.TypeInitializer.Invoke (new object[0]);
但是得到了 MemberAccessException:类型初始化程序不可调用。
我假设这是因为 cctor 是私有的?有没有办法在不改变架构的情况下解决这个问题?
编辑:我找到了一种使用 RuntimeHelpers.RunClassConstructor 的解决方法,但这种方法似乎在 MSDN 中几乎没有记录,我不确定它是黑客还是合理的产品系统。
【问题讨论】:
-
不是骗人的:这个问题也是关于异常以及如何避免它,以及使用RunClassConstructor的合理性。
-
@mafuctr:您是否尝试过
fooType.TypeInitializer.Invoke(null, null);,正如那个答案中提到的那样? -
为什么框架对你的类的静态构造函数的自动调用对你不起作用?
-
@Ani:这确实有效,但我对此有一些疑问......
标签: c# .net static-constructor typeinitializer