title: How to make a property protected AND internal in C#?
body: <p>Here is my shortened abstract class:</p>
  
  <pre><code>abstract class Report {
  
      protected internal abstract string[] Headers { get; protected set; }
  }
  </code></pre>
  
  <p>Here is a derived class:</p>
  
  <pre><code>class OnlineStatusReport : Report {
  
      static string[] headers = new string[] {
          "Time",
          "Message"
      }
  
      protected internal override string[] Headers {
          get { return headers; }
          protected set { headers = value; }
      }
  
      internal OnlineStatusReport() {
          Headers = headers;
      }
  }
  </code></pre>
  
  <p>The idea is, I want to be able to call <code>Report.Headers</code> from anywhere in the assembly, but only allow it to be set by derived classes. I tried making <code>Headers</code> just internal, but protected does not count as more restrictive than internal.  Is there a way to make Headers internal and its set accessor protected AND internal?</p>
  
  <p>I feel like I'm grossly misusing access modifiers, so any design help would be greatly appreciate.</p>