1

C#は、複数のクラスからの派生を制限するという点でC ++ではないことを知っていますが、WPFアプリケーションを開発するときにそれを克服する方法は何ですか。

私のシナリオでは、スライダーであるサードパーティのコントロールがあります。これはコンテンツコントロールから派生していないため、コンテンツプロパティがありません。しかし、私はそのプロパティを持っている必要があります。いくつかの解決策が思い浮かびました。

  1. 複数のクラスから派生(C#では不可能)
  2. 添付プロパティをサードパーティのコントロールに追加します
  3. サードパーティのコントロールを拡張し、Contentプロパティとそれが機能するために必要な他のすべてのプロパティを追加します。
  4. カスタムコントロール内にサードパーティのコントロールをカプセル化し、コンテンツコントロールから派生させます。

どのアプローチが最適ですか?または、他のアプローチをご存知の場合はお知らせください。

4

3 に答える 3

4

私はオプション4に投票します。長期的には、構成は継承よりも優れたオプションのようです。後で、外部の誰もが変更について知らなくても、サードパーティのコントロールを他のものに置き換えることができます。つまり、サードパーティのコントロールへの依存関係をコントロールにカプセル化します。

于 2011-01-18T12:47:35.520 に答える
1

オプション3を使用します。これにより、サードパーティのコントロールを更新せずに追加機能を追加できます(オプション2)。これは、サードパーティプロバイダーがソリューションを更新する場合に役立ちます。変更を再度追加する必要はありません。コンテンツコントロールから派生するためにコントロールが必要ない場合は、オプション4を使用しません。将来の開発者を混乱させる可能性があります。したがって、オプション3が最適のようです。

于 2011-01-18T12:26:09.197 に答える
1

オプション3...サードパーティコントロールのプライベートインスタンスにリダイレクトするカスタムコントロールにサードパーティコントロールのファサードを配置します。ファサードの構築を支援するために実装できるインターフェイスについて、サードパーティのコントロールの逆アセンブル(Reflectorなどを使用)を調べてみてください。

于 2011-01-18T12:33:44.137 に答える