title: internal interface *less* accessible than an internal protected constructor?
body: <p>I have an interface and an abstract base class defined in the same assembly:</p>
  
  <p><strong>IFoo.cs:</strong></p>
  
  <pre><code>internal interface IFoo { ... }
  </code></pre>
  
  <p><strong>Base.cs:</strong></p>
  
  <pre><code>public abstract class Base
  {
      internal protected Base(IFoo foo) { ... }
  }
  </code></pre>
  
  <p>This generates the following compiler error:</p>
  
  <pre><code>CS0051: Inconsistent accessibility: parameter type 'IFoo' is less
          accessible than method 'Base.Base(IFoo)'
  </code></pre>
  
  <p>If I make the Base class constructor internal-only, the error goes away. Since the class is abstract, maybe adding protected to the accessibility doesn't accomplish anything...</p>
  
  <p>Still, I don't understand the error. MSDN defines 'protected internal' as </p>
  
  <blockquote>
    <p>"Access is limited to the current assembly or types derived from the
    containing class"</p>
  </blockquote>
  
  <p>How is the internal interface IFoo <em>less</em> accessible than an internal protected constructor?</p>