これが私の短縮された抽象クラスです:
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
アイデアは、アセンブリ内のどこからでも呼び出せるようにしたいのですが、派生クラスによってのみ設定できるようにすることです。内部だけを作成しようとしHeaders
ましたが、保護は内部よりも制限的であるとは見なされません。ヘッダーを内部にし、そのセットアクセサーを保護して内部にする方法はありますか?
アクセス修飾子をひどく誤用しているような気がするので、デザインの助けをいただければ幸いです。