我在 C# 中有这个类/接口(interface)定义
public class FooBase {
...
protected bool Bar() { ... }
...
}
public interface IBar {
bool Bar();
}
现在我想创建一个 Foo1 派生自 FooBase 实现 IBar 的类:
public class Foo1 : FooBase, IBar {
}
编译器将继承的 protected 方法作为接口(interface)的可公开访问实现,是否存在某种类声明魔法?
当然是一个Foo1方法
bool IBar.Bar()
{
return base.Bar();
}
有效。我只是好奇是否有捷径;)
省略此方法会导致编译器错误:Foo1 未实现接口(interface)成员 IBar.Bar()。 FooBase.Bar() 是静态的、非公共(public)的或返回类型错误。
说明:我将代码继承(类层次结构)和功能实现(接口(interface))分开。因此,对于实现相同接口(interface)的类,访问共享(继承)代码非常方便。
最佳答案
没有捷径。事实上,这种模式在我见过的几个地方使用过(不一定与 ICollection
一起使用,但你明白了):
public class Foo : ICollection
{
protected abstract int Count
{
get;
}
int ICollection.Count
{
get
{
return Count;
}
}
}
关于C# 继承保护方法实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1249672/