title: Interface inheritance with an internal base
body: <p>I was wondering if there's a way to accomplish the following:</p>
  
  <p>In my project, I have defined an interface, let's say IFruit. This interface has a public method GetName(). I also declare an interface IApple which implements IFruit and exposes some other method like GetAppleType() or something. There are more fruits like IBanana, ICherry, whatever. </p>
  
  <p>Now on the outside, I want only to be able to use the actual fruit implementations and not IFruit itself. But I cannot declare the IFruit interface as private or internal, since the inherited interfaces will then say "cannot implement because the base class is less accessible".</p>
  
  <p>I know this is possible with abstract implementations, but that's not an option in this case: I really need to use interfaces. Is there such an option? </p>
  
  <p><strong>Update</strong>
  I guess my example need some clarification :) I use MEF to load interface implementations. The loaded collections are based upon IApple, IBanana, ICherry, etc. But IFruit itself is useless, I can't use classes based on only that interface. So I was looking for a way to prevent other developers from implementing solely IFruit, thinking that their class will be loaded (which it won't). So basically, it comes down to:</p>
  
  <p><pre><code>
  internal interface IFruit
  {
    public string GetName();
  }</p>
  
  <p>public interface IApple : IFruit
  {
    public decimal GetDiameter();
  }</p>
  
  <p>public interface IBanana : IFruit
  {
    public decimal GetLenght();
  }</pre></code></p>
  
  <p>But that won't compile due to the less accessible base interface.</p>