継承可能なクラス「Planet」を作成するとします。継承の目的の 1 つは、異なる既定のプロパティ値を持つテンプレートを作成することです。例えば:
Public Sub New
MyBase.New
MyBase.ForeColor = Red
MyBase.Name = "Mars"
etc.
End Sub
ここで、InitializeComponent メソッドでデフォルトのシリアル化を停止するには、2 つの方法があります。
「DefaultValue」属性を使用してプロパティを実装し、オーバーライド可能にすると、属性を新しい値でオーバーライドできます。これの問題は、プロパティ全体ではなく、属性だけをオーバーライド可能にする方法がないことです。
すべてのプロパティを保護された Reset'PropertyName' および ShouldSerialize'PropertyName' メソッドで実装できました。ただし、これは少しお尻が痛いです。
一般に、基本クラスをオーバーライドする人がプロパティのデフォルト値を変更できるようにすることは重要な考慮事項ですか?