2016-03-18 106 views
3

我最近有一個很奇怪的System.ArgumentException初始化靜態變量時引發奇怪的異常

下面的代碼是在我MainWindow構造上我的WPF應用程序

CodeDefinitions.DEFAULT_AVALIABLE = (() => { return true; }); 

但每一次運行的應用程序,這是我得到:System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll

所以obviusly有哪裏不對勁,所以我把這條線放在一個try/catch塊內,如下所示:

try 
{ 
    CodeDefinitions.DEFAULT_AVALIABLE = (() => { return true; });   
} 
catch() 
{ 

} 

並在catch的'{'處設置斷點,這就是我爲$例外:

[System.TypeInitializationException] {"The type initializer for 'ComunicadorSerial.Classes.Utils.CodeDefinitions' threw an exception."} 

這告訴我什麼都沒有,所以我看了看_innerException

_innerException {"An item with the same key has already been added."} System.Exception {System.ArgumentException} 

據我所知,這excepton使用詞典時拋出,但最奇怪的是,DEFAULT_AVALIABLEFunc<bool>

internal static Func<bool> DEFAULT_AVALIABLE; 

有誰知道這事?這似乎很愚蠢,但我無法弄清楚。

提前致謝!

+1

你有沒有引用'CodeDefinitions.DEFAULT_AVALIABLE'的東西 - 可能將其結果添加到字典中? – Darren

+0

其實我沒有,'CodeDefinitions.DEFAULT_AVALIABLE'只用作類屬性的默認值,當沒有自定義值定義時 - '公共函數 IsAvaliable;' –

回答

4

初始化靜態變量會調用靜態構造函數,如果它尚未被調用。

沒有看到實際的代碼,不可能知道什麼是錯誤的,但檢查你的靜態構造函數和其他靜態成員的任何可能引發此異常的東西。

+0

你是對的。有一個「靜態字典」使用重複鍵初始化。謝謝! –