2つのコンストラクターを持つクラスがあります。
MyObjGroup(MyObj primaryObj)
MyObjGroup(MyObj primaryObj, MyObj secondaryObj)
primaryObj
常に必要です。secondaryObj
ではありません。明らかに、MyObjGroup(myObj)
またはMyObjGroup(myObj, null)
を呼び出して、同じ結果になる可能性があります。
私が最初にやろうと思ったのは、私の最初のctorで、チェックしnull
てprimaryObj
、を投げることでしたArgumentNullException
。また、セカンダリctorでこれを実行し、コードを複製する必要があるため、これをプロパティセッターに移動することを検討しました。
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
、ctor内ではと呼ばれprimaryObj
ます。別のctor(天国は禁じられています)はそれを他の何かと呼ぶかもしれないので、あなたが正しい名前を持っているという保証はありません。
ここで推奨される行動方針は何ですか?