【发布时间】:2016-10-06 00:55:37
【问题描述】:
我有两个接口和一个实现:IState、IEditableState 和State,其中我有一个名为Value 的整数属性。
我想使用IState获取这个属性和IEditableState设置它。
我的代码看起来如此:
interface IState { int Value { get; } }
interface IEditableState:IState { int Value { set; } }
class State:IEditableState {
int Value { get; set; }
}
显然,我收到一条警告,指出 IEditableState.Value 隐含隐藏了 IState.Value,为了清楚起见,我应该添加关键字 new。直观地说,这是同一个属性,所以我不明白为什么它应该是新的。
这样做的“干净”方法是什么?
【问题讨论】:
-
你为什么要这个..你能解释一下吗..比我能帮助你
-
最终,我们的目标是通过强制将
IState强制转换为IEditableState来更好地组织代码以进行修改。请注意是否相关,但在我的情况下,State恰好是一个单例,我使用IState通过服务定位器访问它。
标签: c# inheritance properties interface