既存の(固定)クラスに新しいインターフェイスを実装させることはできますか?
-
06-07-2019 - |
質問
私はすでに人々の答えを知っていると感じていますが、とにかくここに行きます:
新しいクラスを書いているとしましょう。それをPooledQueue<T>
と呼びましょう。このコンストラクターでは、インターフェイスIResourcePool<T>
を実装する引数を受け取ります。ここでのアイデアは、<=>のプロパティ/メソッドを提供する限り、基礎となるプールオブジェクトを使用しても問題ないということです(ご存知のとおり、インターフェイスの背後にあるアイデア全体です)。
しかし、実装 <=>を行わないことを除いて、<=>のすべての機能を提供する既にクラスがある場合ソースコードを変更します)、実装を強制する方法はありますか?
人々が答えると期待しているのは、必要なインターフェイスを実装する既存のクラスのラッパーを作成するだけだということです。しかし、私はこれをできるようにしたいだけです:
// GetDataPool returns an object of type Pool<Data> that I can't modify
var q = new PooledQueue<Data>(GetDataPool());
これの代わりに:
var q = new PooledQueue<Data>(new PoolWrapper<Data>(GetDataPool()));
クラスのインターフェイスの実装をクラス定義とは別に定義できるとしたら、本当に便利だと思います。適切に設計されたデータベースが構造化される方法の並べ替え-エンティティを他のテーブルのIDとリンクする関連付けテーブルを使用します。それは理にかなっていますか?
所属していません StackOverflow