加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#继承了实现接口的protected方法

发布时间:2020-12-16 01:31:43 所属栏目:百科 来源:网络整理
导读:我在C#中有这个类/接口定义 public class FooBase { ... protected bool Bar() { ... } ...}public interface IBar { bool Bar();} 现在我想创建一个派生自FooBase实现IBar的类Foo1: public class Foo1 : FooBase,IBar {} 是否存在一些类声明魔法,编译器将
我在C#中有这个类/接口定义

public class FooBase {
    ...
    protected bool Bar() { ... }
    ...
}

public interface IBar {
    bool Bar();
}

现在我想创建一个派生自FooBase实现IBar的类Foo1:

public class Foo1 : FooBase,IBar {
}

是否存在一些类声明魔法,编译器将继承的受保护方法作为接口的可公开访问的实现?

当然是一种Foo1方法

bool IBar.Bar()
{
    return base.Bar();
}

作品.我只是好奇是否有捷径;)

省略此方法会导致编译器错误:Foo1未实现接口成员IBar.Bar(). FooBase.Bar()是静态的,不是公共的,或者返回类型错误.

说明:我将代码继承(类层次结构)和功能实现(接口)分开.因此,对于实现相同接口的类,访问共享(继承)代码非常方便.

解决方法

没有捷径.事实上,这种模式在我见过的一些地方使用过(不一定是ICollection,但你明白了):

public class Foo : ICollection
{
    protected abstract int Count
    {
        get;
    }

    int ICollection.Count
    {
        get
        {
            return Count;
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读