title: Why can not override protected internal method?
body: <p>C# avoid user to override internal protected methods. I know this question has been asked and I found <a href="https://stackoverflow.com/questions/2375792/overriding-protected-internal-with-protected/2375947#2375947">Eric Lippert's example</a> about it. But I didn't consider that as a good idea. Here is my example:</p>
  
  <pre><code>// A.dll
  public abstract class A {
      public abstract void Method1(); 
      internal protected abstract void Method2(); 
  }
  
  // B.dll, ref A.dll
  public class B : A {
      public override void Method1(); 
      internal protected override void Method2(); 
  }
  
  public class B1 {
      public void MethodC(){
          var b = new B();
          // can access b.Method1
          // can access b.Method2
      }
  }
  
  // C.dll, ref A.dll and B.dll
  public class C {
      public void MethodC(){
          var b = new B();
          // can access b.Method1
          // can not access b.Method2
      }
  }
  </code></pre>
  
  <p>In this case, Method2 can be accessed by B1, not by C. But since internal protected can not be override, that will be not convenient to do this. How do you guys think about it?</p>
  
  <p>---- add comment ---------</p>
  
  <p>My purpose is clear. I want to let Method2 can be accessed by B1, and I don't want Method2 access by C.
  The problem is that C# does not allow to overwrite "internal protected".</p>
  
  <p>---- add comment again ---------</p>
  
  <p>Well, I know what's the problem now. This question is easy but Eric Lippert's example make it complex.</p>