And*_*ndy 5 c# overriding interface winforms
我想在基类上显式实现一个接口方法.
除此之外,我想将此方法设为虚拟,以便我可以在派生类上覆盖它,但显式实现的方法不允许这样做.
我尝试在基类中创建一个受保护的虚方法,从接口方法调用它,然后在派生类中重写此方法.这似乎有效,但FxCop抱怨规则CA1033"接口方法应该可以通过子类型调用".
(我的基类实现了接口,派生类没有.)
我应该如何改进这个(缩写的)代码更正确,或者我应该在这种情况下忽略FxCop?
在基类中:
protected virtual string ConstructSignal()
{
return "Base string";
}
#region ISignal Members
string ISignal.GetMessage()
{
this.ConstructSignal();
}
#endregion
Run Code Online (Sandbox Code Playgroud)
在派生类中:
protected override string ConstructSignal()
{
return "Derived string";
}
Run Code Online (Sandbox Code Playgroud)
决定在最后隐式实现接口方法,这仍然有效并使FxCop保持高兴.
将 ConstructSignal() 方法声明移动到某个接口(让其命名为 IConstructSignal)并在派生类中实现它。以下显式实施将起作用:
string ISignal.GetMessage()
{
(this as IConstructSignal).ConstructSignal(); // implementation of derived class called
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5733 次 |
| 最近记录: |