2016-10-20 1 views
1

拡張メソッドを使用してインタフェースにメソッドを追加する方法については読んでいますが、仮想メソッドを含むインタフェースからベースクラスを派生させない理由も考えていました。最初から設計する柔軟性があります)。基本クラスを使用すると、必要に応じてオーバーライドの柔軟性が向上します。インタフェースエクステンション - ベースクラスまたはエクステンションメソッド

+1

基本クラスの柔軟性はありません。基本的には、基本クラスを選択するのではなく、基本クラスを拡張する代わりに、この基本クラスを拡張するようにインターフェイスのすべての実装を強制しています。 – BoltClock

+1

クラスを変更できない多くの状況では動作しません...実際の質問は何ですか? –

答えて

3

どちらも利点があります。

基本クラス:

  • あなたは、民間分野で状態を保存することができます。
  • 必要に応じて、サブクラスでメソッドをオーバーライドできます。
  • 実装は、(潜在的に)多くの拡張メソッドクラスに散在するのではなく、1か所にあります。

拡張方法:

  • は、与えられた基本クラスから継承するためにあなたのインターフェースの実装を必要としません。 C#は多重継承をサポートしていないので、これは重要な問題になります。
  • クラスのソースコードにアクセスする必要はありません。
関連する問題