处理属性依赖
问题描述:
当开发一个类(在C#中,但我想这个问题有点语言无关)什么是正确的方法来处理属性之间的依赖关系?处理属性依赖
例如,我想创建一个属性B,其值是以某种方式从属性A的值中派生的。属性B是未定义的,如果属性A尚未设置,则不应调用该属性。如果A没有被设置,那么在B的getter中抛出一个异常似乎是一种处理这种情况的优雅方式。仅仅从属性B返回一些默认值并不是我想要做的事情。
一种方法是通过构造函数强制执行A的初始化,但我们假设需要一个不带参数的默认构造函数,因此这不是一个选项。
答
在这种情况下抛出InvalidOperationException
似乎完全正确的对我说:
其他原因造成的
InvalidOperationException
在 情况下使用时,未能调用 方法比 无效的参数
现在授予它关于方法而不是属性的讨论,但我认为它仍然很好。
如果您想要框架中的示例,则指定IEnumerator.Current
将在第一个元素之前或最后一个元素之前调用InvalidOperationException
。 (C#生成的迭代器实际上不这样做,但这是另一回事:)
这听起来像是在调用代码中的错误 ......他们使用的对象不正确。指出错误的正确方法是抛出异常。
谢谢乔恩。那么我会这样做,但听到人们可能采取的其他选择会很有趣。 – 2010-09-09 21:35:06