在我的 C# 程序中,我有几个自己的接口(interface),我想将它们保留在我的程序集中。
internal interface Doable {
void DoSomething ();
}
internal interface Informable {
void SomethingHappened (Doable obj);
}
我还有一个不能是内部的抽象类,它抽象地实现了这两个接口(interface)。
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 )
是另一回事:它提示(正确地)接口(interface) Doable
是内部的(因此此方法可能没有 public
访问修饰符)。
我进退两难了。我基本上想在程序集内部的所有类中保留这两个接口(interface)及其所有具体实现的方法,而外部调用者不知道它们的存在。
想知道该怎么做吗?
最佳答案
与其将接口(interface)实现抽象化,不如提供一个具体(显式接口(interface))实现来调用实际执行工作的内部抽象方法。这确保了接口(interface)不可公开调用;它只能从当前程序集访问。
关于c# - 接口(interface)访问修饰符困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48079363/