ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

界面访问修饰符困境

2019-10-25 13:06:02  阅读:209  来源: 互联网

标签:interface abstract-class access-modifiers c


在我的C#程序中,我有几个自己的接口,希望将它们保留在程序集内部.

internal interface Doable {
    void DoSomething ();
}

internal interface Informable {
    void SomethingHappened (Doable obj);
}

而且我还有一个抽象类,它不能是内部的,并且像这样抽象地实现了两个接口.

public abstract class MyAbstractClass : Doable, Informable {
    internal abstract void DoSomething ();
    internal abstract void SomethingHappened (Doable obj);

    // Other methods
}

但是,当我这样做时,我得到一个错误,即MyAbstractClass没有实现Doable.DoSomething()(以及SomethingHappened(Doable obj)).

我可以将抽象实现的DoSomething()的访问修饰符更改为public(但是我本来不想这么做),但是SomethingHappened(Doable obj)是另一回事:它抱怨(正确地是)接口Doable是内部的(因此此方法可能没有公共访问修饰符).

我处于两难境地.我基本上想在内部所有程序集中所有接口中所有接口及其所有具体实现的方法,而外部调用者不知道它们的存在.

想知道如何去做吗?

解决方法:

而不是使接口实现抽象化,而是提供一种具体的(显式接口)实现,该实现调用实际完成工作的内部抽象方法.这确保了该接口不能被公共调用.它只能从当前程序集中访问.

标签:interface,abstract-class,access-modifiers,c
来源: https://codeday.me/bug/20191025/1928760.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有