我想知道是否有办法完成以下任务:
在我的项目中,我定义了一个接口,比如说 IFruit。这个接口有一个公共方法GetName()。我还声明了一个接口 IApple,它实现了 IFruit 并公开了一些其他方法,如 GetAppleType() 或其他方法。还有更多的水果,比如 Ibanana、ICherry 等等。
现在在外面,我只想能够使用实际的水果实现,而不是 IFruit 本身。但我不能将 IFruit 接口声明为私有或内部接口,因为继承的接口会说“无法实现,因为基类的可访问性较低”。
我知道这对于抽象实现是可能的,但在这种情况下这不是一个选择:我真的需要使用接口。有这样的选择吗?
更新 我想我的例子需要一些澄清:) 我使用 MEF 来加载接口实现。加载的集合基于 IApple、IBanana、ICherry 等。但 IFruit 本身没有用,我不能使用仅基于该接口的类。所以我一直在寻找一种方法来阻止其他开发人员单独实现 IFruit,认为他们的类将被加载(它不会)。所以基本上,它归结为:
internal interface IFruit
{
public string GetName();
}
public interface IApple : IFruit
{
public decimal GetDiameter();
}
public interface IBanana : IFruit
{
public decimal GetLenght();
}
但是由于基础接口的可访问性较低,这将无法编译。