クラスに指定されているクラスのインスタンスを作成しています(型パラメータまたはコンストラクタのパラメータのいずれかとして)クラスがインスタンスを作成するときにクラスのインスタンスを作成するのはむしろ意味がないため、ジェネリックを使用して型を渡すことは意味があります。例えば。クラスと汎用クラスのコードを共有する
var foo = new Foo<Bar>();
しかし、コンパイル時に型パラメータが宣言されているため、これにより実行時にクラスを使用できなくなります。
これを実行時に使用するには、コンストラクタが引数として引数を取る必要があります。例えば。クラスで
var foo = new Foo(new Bar());
コードの残りの部分は、しかし同じなので、これは2つの異なるクラスであることをした場合、重複したコードの多くが存在することになります。
質問:
- どのように私はコードを共有し、コードの重複を避けるのですか?
- これは、同じクラスの2つのコンストラクタとすることができますか?
- 私は間違ったアプローチをとっていますか?たぶん
new Foo(typeof(Bar))
?
現在、それは明確ではない/広すぎます。私は、 "共有コード" - 構成/継承を想定しています。 2つのコンストラクタ - はい、可能です。 'typeof(Bar)' - これは他のものです - あなたがしたいことに依存します –
あなたの実装がどのように見えるか不思議です。この質問から、これは一般的なものよりも継承の候補に似ています。あるいは、 'Foo'が' Bar'に依存している場合、共通プロパティ/メソッドは他のものを呼び出すことができ、複製を避けることができます。 – Theo
*クラスに指定されているクラスのインスタンスを作成するクラスを開発しています(型パラメータまたはコンストラクタのパラメータとして)。そのため、クラスのインスタンスを作成するのは無意味ですとにかくインスタンスを生成するので、ジェネリックを使って型を渡すのが理にかなっています。 –