好吧,所以我碰到以下问题,提出了眉毛。Assembly.GetCallingAssembly()和静态构造函数?
由于各种原因,我有一个测试设置,其中TestingAssembly.dll中的测试类取决于BaseTestingAssembly.dll中的TestingBase类。 之一TestBase确实在此期间的一件事就是寻找在自己的一定的嵌入式资源和调用程序集
所以我BaseTestingAssembly包含以下几行...
public class TestBase {
private static Assembly _assembly;
private static Assembly _calling_assembly;
static TestBase() {
_assembly = Assembly.GetExecutingAssembly();
_calling_assembly = Assembly.GetCallingAssembly();
}
}
静态,因为我想通,这些程序集在应用程序的整个生命周期中都是一样的,所以为什么还要在每次测试时重新计算它们。
运行这个时,我注意到_assembly和_calling_assembly分别被设置为BaseTestingAssembly而不是BaseTestingAssembly和TestingAssembly。
将变量设置为非静态,并让它们在常规构造函数中初始化,但我很困惑为什么发生这种情况。我认为静态构造函数第一次运行静态成员被引用。这只能来自我的TestingAssembly,它应该是调用者。有谁知道可能发生了什么?
那么为什么调用程序集不是null呢? – 2008-09-23 16:23:11