0

継承可能なクラス「Planet」を作成するとします。継承の目的の 1 つは、異なる既定のプロパティ値を持つテンプレートを作成することです。例えば:

Public Sub New
    MyBase.New
    MyBase.ForeColor = Red
    MyBase.Name = "Mars"
    etc.
End Sub

ここで、InitializeComponent メソッドでデフォルトのシリアル化を停止するには、2 つの方法があります。

  1. 「DefaultValue」属性を使用してプロパティを実装し、オーバーライド可能にすると、属性を新しい値でオーバーライドできます。これの問題は、プロパティ全体ではなく、属性だけをオーバーライド可能にする方法がないことです。

  2. すべてのプロパティを保護された Reset'PropertyName' および ShouldSerialize'PropertyName' メソッドで実装できました。ただし、これは少しお尻が痛いです。

一般に、基本クラスをオーバーライドする人がプロパティのデフォルト値を変更できるようにすることは重要な考慮事項ですか?

4

1 に答える 1

1

私はノーと言うでしょう。派生者がデフォルト値の変更を検討するかどうかを事前に推測する方法はありません。決して使用されない可能性のあるコードをクラスに追加します。派生元がデフォルト値を変更できることを考えると(ピタであっても)、不要なコードを追加することは避けてください。

このためのガイダンスは、WFの実装から入手できます。これを行うことはめったにありません。

于 2010-01-09T12:04:12.060 に答える