2010-09-09 141 views
1

當開發一個類(在C#中,但我想這個問題有點語言無關)什麼是正確的方法來處理屬性之間的依賴關係?處理屬性依賴

例如,我想創建一個屬性B,其值是以某種方式從屬性A的值中派生的。屬性B是未定義的,如果屬性A尚未設置,則不應調用該屬性。如果A沒有被設置,那麼在B的getter中拋出一個異常似乎是一種處理這種情況的優雅方式。僅僅從屬性B返回一些默認值並不是我想要做的事情。

一種方法是通過構造函數強制執行A​​的初始化,但我們假設需要一個不帶參數的默認構造函數,因此這不是一個選項。

回答

2

在這種情況下拋出InvalidOperationException似乎完全正確的對我說:

InvalidOperationException在 情況下使用時,未能調用 方法比 無效的參數

其他原因造成的

現在授予它關於方法而不是屬性的討論,但我認爲它仍然很好。

如果您想要框架中的示例,則指定IEnumerator.Current將在第一個元素之前或最後一個元素之前調用InvalidOperationException。 (C#生成的迭代器實際上不這樣做,但這是另一回事:)

這聽起來像是在調用代碼中的錯誤 ......他們使用的對象不正確。指出錯誤的正確方法是拋出異常。

+0

謝謝喬恩。那麼我會這樣做,但聽到人們可能採取的其他選擇會很有趣。 – 2010-09-09 21:35:06