我有两个构造函数的类:验证构造函数的参数
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