比方說,我有Foo
以下構造函數在C#:有條件地構造函數,C#
public Foo()
{
// ...
}
protected Foo(bool connect)
: this()
{
// ...
}
我正在尋找一種方式來每當connect
參數true
只執行this()
部分。這是一種方法來做到這一點? (對於好奇的人來說:背後的原因是Foo
類創建了連接到某些事物的對象;當它們被創建時,它們也應該總是嘗試連接,現在我正在創建一個模擬器(或MOCK)爲它擴展了Foo
類,這就是我爲protected
構造函數添加的;當使用這個時,應該有選項不創建實際的連接,我想在實現這個時將Foo
類改爲儘可能少。)
我個人比較喜歡這種方法。它避免了調用一個非構造函數方法的缺點,即只讀字段不能在非構造函數中初始化。它也擴展到許多構造函數(所有這些都可以調用受保護的甚至私有的「主」構造函數) - 儘管調用init()方法也可以調整比例。 –
是的,其實我認爲這也是最好的方式 –
考慮@MatthewWatson所說的,這確實可能是正確的答案。謝謝! –