c# 類型初始值設定項引發異常

TypeInitializationExeption在MSND中的描述爲:當類初始值設定項不能初始化類型時,將創建 TypeInitializationException 並向其傳遞由該類型的類初始值設定項引發的異常引用。

我們知道,類型初始化或者訪問類型的靜態成員時,都會對類中的其他靜態成員進行初始化,並執行靜態構造函數(如果有的話)。在這些過程中如果任一環節出現例如下面的代碼:

 class ClassHelper
     {
         public static string Field = Do("Initial the static field");
         public static string StaticString = "Initaial static string";
         public string NonStaticString = "Initial non static string";
         public ClassHelper()
         {
             NonStaticString = "Change non static string in instance constructor";
             StaticString = "Change static string in instance constructor";
         }
         public static string Do(string field)
         {
             Console.WriteLine(field);
             throw new Exception();
             return field;
         }
     }
<p>1. 訪問類的某一靜態成員,而其他靜態成員的初始化(或靜態構造函數中)產生異常。例如訪問ClassHelper.StaticString,由於靜態成員Field的初始化產生異常,因此調用ClassHelper.StaticString會拋出TypeInitializationException。</p><p>2. 訪問類的某一靜態成員,該靜態成員的初始化(或靜態構造函數中)產生異常。例如訪問ClassHelper.Field。</p><p>3. 對該類進行初始化,而類中的某個靜態成員初始化(或靜態構造函數中)產生異常。例如ClassHelper helper = new ClassHelper()。</p><p>
</p><p>總之就是你要的東西不能初始化就會出現這個異常.</p><p>
</p><p><span style="color:#ff0000;">PS:如果你的項目採用三層結構,並且用到了工廠模式,比如你的數據訪問對象是通過數據訪問工廠產生的,而在數據訪問工廠中我們用的是反射機制,這個時候你要創建的對象所依賴的程序集必須要能訪問.比如你的SQLServerDAL程序集必須在你當前網站目錄的bin目錄裏面.否則就會出現上面的錯誤.</span>
</p>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章