我想知道是否有办法完成以下任务:
在我的项目中,我定义了一个界面,让我们说IFruit.此接口具有公共方法GetName().我还声明了一个实现IFruit的接口IApple,并公开了一些其他方法,如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(); }
但由于不太容易访问的基本接口,这将无法编译.