处理属性依赖

问题描述:

当开发一个类(在C#中,但我想这个问题有点语言无关)什么是正确的方法来处理属性之间的依赖关系?处理属性依赖

例如,我想创建一个属性B,其值是以某种方式从属性A的值中派生的。属性B是未定义的,如果属性A尚未设置,则不应调用该属性。如果A没有被设置,那么在B的getter中抛出一个异常似乎是一种处理这种情况的优雅方式。仅仅从属性B返回一些默认值并不是我想要做的事情。

一种方法是通过构造函数强制执行A​​的初始化,但我们假设需要一个不带参数的默认构造函数,因此这不是一个选项。

在这种情况下抛出InvalidOperationException似乎完全正确的对我说:

InvalidOperationException在 情况下使用时,未能调用 方法比 无效的参数

其他原因造成的

现在授予它关于方法而不是属性的讨论,但我认为它仍然很好。

如果您想要框架中的示例,则指定IEnumerator.Current将在第一个元素之前或最后一个元素之前调用InvalidOperationException。 (C#生成的迭代器实际上不这样做,但这是另一回事:)

这听起来像是在调用代码中的错误 ......他们使用的对象不正确。指出错误的正确方法是抛出异常。

+0

谢谢乔恩。那么我会这样做,但听到人们可能采取的其他选择会很有趣。 – 2010-09-09 21:35:06