好吧,所以我碰到以下問題,提出了眉毛。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