如果静态类Load失败会发生什么

时间:2013-11-11 16:29:12

标签: c# .net .net-assembly

让我们说AppDomain.AssemblyLoad期间无法加载static class MyClass类型。也许该类包含一个静态属性,它从配置中读取连接字符串。进一步引用所述DLL中的类型是否会导致AppDomain.AssemblyLoad尝试重新加载DLL?

换句话说,AppDomain.AssemblyLoad会重试以前无法加载的DLL吗?

2 个答案:

答案 0 :(得分:4)

  

所以它会再次重新加载以进一步调用该类的某些方法吗?

没有。如果特定类型的类型初始化失败,那么该类型在AppDomain的生命周期中实际上是无用的。任何进一步尝试使用该类型将立即再次抛出相同的TypeInitializationException,而不重试。尽可能避免错误的类型初始化。

如果您创建一个新的AppDomain,那么 将尝试再次初始化该类型。

答案 1 :(得分:0)

当然不是,如果您班级的 design 不这样做。

例如,如果对于每个方法访问,则检查是否已初始化类,如果未初始化,则可以实际模拟该行为。

但是,说实话,它不是那么好的设计模式。