2010-11-13 33 views
1

我有一個單身,當我把它從我的單元測試,我得到TypeInitializationException在我的單例中。我該如何解決它?

「System.TypeInitializationException是由用戶代碼未處理 消息=爲「的類型初始mycompany.class'threw異常」

public sealed class MySingleton 
{ 

    private static MySingleton instance = new MySingleton(); 

    private MySingleton() 
    { 
    ConnectionString = GetConnectionstring(); 
    } 

    public static MySingleton NewConnectivity 
    { 
    get { return instance ?? (instance = new MySingleton()); } 
    } 

    public string ConnectionString { get; set; } 

    private static string GetConnectionstring() 
    { 
    return "bla"; 
    } 
} 
+0

我想我們可能需要看到更多的代碼... – 2010-11-13 12:00:52

+1

mycompany.class在哪裏? – 2010-11-13 12:04:21

+0

TypeInitializationException的InnerException是什麼? – 2010-11-13 15:47:54

回答

2

我看不到有什麼......如果你有一個靜態字段初始化器,爲什麼該屬性需要檢查null?其實我嫌疑這是由於該領域的初始化劑在靜態構造函數運行其他代碼等

我會嘗試刪除字段初始化器 - 但請注意,如果沒有這個有是一個邊緣的情況下(定時/線程-race),這可能導致創建多個對象。如果這是不可接受的,有很多方法可以避免這種線程競爭。

+0

由於「字段初始化程序在*其他代碼之前運行*」,是否可以在它存在之前調用'GetConnectionstring()'「?如果觸發'NullReferenceException',它可能會解釋'TypeInitializationException'。 – Patrick 2010-11-13 15:21:19

1

A TypeInitializationException發生在類「mycompany.class」中的靜態構造函數引發異常時。嘗試在你的靜態構造函數中放置一個斷點,並進入每個調用?在這種情況下你會得到一些其他例外嗎?

相關問題