2013-07-27 79 views
1

我有一個C#中的自定義類的屬性,我已經覆蓋了setter。我想/的屬性在自定義類中的setter比較,如下所示:設置屬性時比較值成員

public DatabaseInfo CurrentDatabaseManagedSelection 
{ 
    get { return CurrentDatabaseManaged; } 
    set { 
     if (String.Equals(value.Name, CurrentDatabaseManaged.Name,StringComparison.OrdinalIgnoreCase))  
       return; 
     CurrentDatabaseManaged = DatabaseManagement.ReadDatabase(value.FileName); 
     } 
} 

的DatabaseInfo類中,有一個名爲名稱的標準字符串屬性。

但是,當我運行該程序時,我得到以下異常。誰能告訴我爲什麼會發生這種情況,請問如何解決這個問題?

異常已被調用的目標拋出。

編輯:我確實在視圖模型的構造函數中設置了setter的值。我只需將CurrentDatabaseManagedSelection設置爲等於DatabaseInfo類的對象即可。

+1

我們 - - 至少我 - 可能需要更多的信息。下面的工作沒有問題'set {if(string.Equals(value,Name))return; _name = value;}'在一個基本的類結構中。是否有可能對房產給出完整的定義,以便我們看到它的定義?另外你如何在構造函數中設置它? –

+0

@MechnicalObject好的,我會在一分鐘內更新問題以添加更多信息:) – Andy

+1

@Andy告訴我內部的異常。它必須與空引用相關 – Ehsan

回答

0

想想我可能已經發現了這個問題... 好吧,我已經解決了!

問題是CurrentDatabaseManaged尚未初始化,所以等於null當我嘗試設置上述屬性。我通過在setter方法中添加try ... catch來發現此問題,併爲CurrentDatabaseManaged.Name創建了一個新字符串 - 指向該行的堆棧跟蹤。

希望在未來幫助別人。

+1

很高興聽到您發現問題。您可能還想在'ReadDatabase(value.FileName);'方法中添加一個關閉_if尚未完成_的方法,以確定您的方法在傳遞空字符串或空字符串時的反應方式。 –

+1

@MechanicalObject是的,我已經這樣做了,但謝謝你的advicel – Andy