我第一次使用構造函數注入並希望防禦地編寫我的代碼。c#構造函數注入和構造函數重載
因此,如果我有一類具有一個構造函數和一個保存如下方法:
public SomeConstructor(string name, Object someObject)
{
_name= name;
_someObject= someObject;
}
public void Save()
{
// Does a database save
}
但隨後需要建立在這個類另一個相關的方法,該方法不需要_someObject所以我創建一個重載鏈構造函數:
public SomeConstructor(string name) : this(name, null)
{
}
我怎樣才能成功地阻止別人用這個第二個構造帶1個參數初始化類,並利用具有someObject爲空保存()?
我沒有使用注射工具。
上面是一個簡單的例子,在這個例子中,你是正確的,我可以只爲null引發異常,就像我沒有設置屬性一樣。
我想避免的是每個方法開始時的一系列驗證檢查。
但在上面的例子中,你基本上有1個類來保存/刪除一個對象,它在構造函數中傳遞。即1類僅用於持久性?所有其他方法(如Get()最近的SomeObject都需要一個獨立的類?這有點聽起來像矯枉過正? – asn1981 2011-06-02 12:06:39
有時它是過度的,但是你可以只接受傳遞給構造函數的參數中的一個參數不被使用。 – 2011-06-02 12:22:30
嗯......我猜並不總是最好的辦法。防守編程意味着做出可能違反其他「原則」的決定。我想我只是希望在所有情況下都有一個壓倒一切的規則。 – asn1981 2011-06-02 12:42:59