Ray*_*Ray 19 .net c# inheritance properties
我有一个具有虚拟属性的基类:
public virtual string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后我有一个派生类,只覆盖属性的getter
public override string Name
{
get { return "Fixed Name"; }
}
Run Code Online (Sandbox Code Playgroud)
问题是这只会覆盖吸气剂.如果有人调用setter,则会调用基类setter,并且调用者不会知道它无效.
所以我想我会做类似的事情:
public override string Name
{
get { return "Fixed Name"; }
set { throw new Exception(); } //which exception type?
}
Run Code Online (Sandbox Code Playgroud)
所以两个(相关问题):
编辑:为什么一个例外优先于另一个例外的一些原因是好的.我的同事和我在NotSupported和之间有同样的论点InvalidOperation.
Pet*_*hev 25
抛出NotSupportedException异常.从链接引用:
基类中不支持某些方法,期望这些方法将在派生类中实现.派生类可能只实现基类中的方法的子集,并为不支持的方法抛出NotSupportedException.
我的观点是InvalidOperationException不是一个正确的选项.从MSDN引用:
方法调用对于对象的当前状态无效时引发的异常.
在你的情况下,没有关于当前状态的信息.这是班级合同不支持该操作.
| 归档时间: |
|
| 查看次数: |
3706 次 |
| 最近记录: |