Вот мой сокращенный абстрактный класс:
abstract class Report {
protected internal abstract string[] Headers { get; protected set; }
}
Вот производный класс:
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;
}
}
Идея заключается в том, что я хочу иметь возможность вызывать Report.Headers из любой точки сборки, но только разрешить ее устанавливать производными классами. Я пытался сделать заголовки только внутренними, но защищенный не считается более ограничительным, чем внутренним. Есть ли способ сделать заголовки внутренними, а его набор доступа - защищенным и внутренним?
Мне кажется, что я сильно злоупотребляю модификаторами доступа, поэтому любая помощь по дизайну будет очень благодарна.