我有一个有两个构造函数的类:
MyObjGroup(MyObj primaryObj)
MyObjGroup(MyObj primaryObj, MyObj secondaryObj)
primaryObj
总是需要的。secondaryObj
不是。显然,您可以调用MyObjGroup(myObj)
orMyObjGroup(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
。另一个演员(天堂禁止)可能会称它为别的名字,所以不能保证你有正确的名字。
这里推荐的行动方案是什么?