さまざまなオブジェクトをインスタンス化できるファクトリメソッドのコレクションを作成したいと思います。タイプは実行時にのみ認識されます。私は簡単にこのためにデリゲートを作成することができます。ジェネリックデリゲートインスタンスのリストを作成するにはどうすればよいですか?
delegate T InstanceCreator<T>()
が、これはコンパイラエラーを与える:
Dictionary<string, InstanceCreator<T>>
を「記号Tを解決することはできません」ので、この場所で、私はちょうど
Dictionary<string, Delegate>
を宣言します
私は、Addメソッドでタイプの特異性が欠けているのを補ってみましたが、同じ問題が発生しました。
public void AddFactory(string typeName, InstanceCreator<T> factory)
のみInstanceCreator<T>
代表者が私のコレクションに追加されますことを確実にするためのより良い方法はありますか?これが唯一のInstanceCreator<T>
要素を追加することが可能にそれを制約します
public void AddFactory<T>(string typeName, InstanceCreator<T> factory)
:
もっとコードを見る必要があります。具体的には、ジェネリックオブジェクトを作成しようとしている実際のコードを表示したり、ジェネリック関数を呼び出したりできますか? –