处理属性依赖项

时间:2010-09-09 21:28:51

标签: c# class properties

在开发类时(在C#中,但我认为这个问题在某种程度上与语言无关)处理属性之间依赖关系的正确方法是什么?

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

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

1 个答案:

答案 0 :(得分:2)

在这种情况下投掷InvalidOperationException对我来说似乎完全正确:

  

InvalidOperationException用于   无法调用时的情况   方法是由其他原因引起的   无效的参数

现在授予它谈论方法而不是属性,但我认为它仍然没问题。

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

这听起来好像是调用代码中的 bug 来执行此操作......他们正在不正确地使用该对象。指出错误的正确方法是抛出异常。