【发布时间】:2011-11-21 20:56:47
【问题描述】:
我有一个具有虚拟属性的基类:
public virtual string Name { get; set; }
然后我有一个派生类,它只覆盖属性的getter
public override string Name
{
get { return "Fixed Name"; }
}
问题是这只覆盖了getter。如果有人调用 setter,则基类 setter 会被调用,而调用者不会知道它是无效的。
所以我想我会做这样的事情:
public override string Name
{
get { return "Fixed Name"; }
set { throw new Exception(); } //which exception type?
}
所以两个(相关问题):
- 有更好的模式供我使用吗?
- 如果我应该使用上述模式,应该使用什么异常?
编辑:一个例外优于另一个例外的一些原因是好的。我和我的同事在NotSupported 和InvalidOperation 之间有同样的争论。
【问题讨论】:
-
基类中需要setter有什么原因吗?
-
@DarylTeo 是的,基类需要支持手动设置名称,虽然它可以在构造函数中。
标签: c# .net inheritance properties