我有兩個構造函數的類:驗證構造函數的參數
MyObjGroup(MyObj primaryObj)
MyObjGroup(MyObj primaryObj, MyObj secondaryObj)
primaryObj
始終是必需的。 secondaryObj
不是。顯然你可以撥打MyObjGroup(myObj)
或MyObjGroup(myObj, null)
,最後得到相同的結果。
我第一次考慮的是在我的第一個ctor中,在null
上檢查primaryObj
並拋出ArgumentNullException
。我還需要在我的輔助計算機上執行此操作,複製代碼,因此我考慮將其移至屬性設置器。
private MyObj _primaryObj;
public MyObj PrimaryObj
{
get {return _primaryObj;}
private set
{
if(value == null) throw new ArgumentNullException("value", "PrimaryObj cannot be null");
_primaryObj = value;
}
}
然而,在屬性參數的名稱是value
,而在它被稱爲primaryObj
的構造函數。另一個ctor(天堂禁止)可能稱之爲別的東西,所以不能保證你有正確的名字。
這裏推薦的行動方案是什麼?
是不是真的'基地(primaryObj)''沒有這個(primaryObj)'? – Arne 2012-07-23 19:17:18
你是不是指第二個ctor上的':this(primaryObj)'而不是'base'? – 2012-07-23 19:18:54
是的,我修好了。謝謝你敏銳的眼睛。 – StriplingWarrior 2012-07-23 19:22:57