好的,所以我遇到了以下问题,引起了人们的注意。
由于各种原因,我有一个测试设置,其中 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,它应该是调用者。有谁知道可能发生了什么?