Como tornar uma propriedade protegida E interna em C #?

Aqui está minha classe resumida resumida:

abstract class Report {

    protected internal abstract string[] Headers { get; protected set; }
}

Aqui está uma classe derivada:

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;
    }
}

A idéia é que eu quero poder ligarReport.Headers de qualquer lugar na montagem, mas apenas permite que seja definido por classes derivadas. Eu tentei fazerHeaders apenas interno, mas protegido não conta como mais restritivo que interno. Existe uma maneira de tornar os cabeçalhos internos e o acessador definido protegido E interno?

Sinto que estou usando indevidamente modificadores de acesso, portanto qualquer ajuda em design seria muito apreciad

questionAnswers(14)

yourAnswerToTheQuestion