2017-11-15 12 views
0

は、私は特定の種類typeofを探している私のアセンブリをスキャン(MyInterface <>) 私は、これらのタイプのインスタンスを作成できるように、私は、静的辞書にこれらのタイプを追加要求時に。代わりactivator.createinstanceの.NETコンパイル表現()

私はActivator.CreateInstanceを使用してこれらの型を作成しています。しかし、その後、私は悪いパフォーマンスに気づき、研究は私が何をすべきか、

static IDictionary<string, Delegate> Store = new ConcurrentDictionary<string, Delegate>(); 

どこで立ち往生午前いる辞書でコンパイルラムダを格納し、http://mattgabriel.co.uk/2016/02/12/215/

に私を指摘している私は、デリゲートへを得るとき

Delegate instanceToCreate = DelegateStore.Store["keyName"]; 

してインスタンスを作成しますそれから私は、コンストラクタにパラメータ_configurationを渡してインスタンスを作成しますデリゲートを呼び出す必要があります。私は試した;

instanceToCreate.DynamicInvoke(new object[] { _configuration }); 

私が手にエラーがある:タイプの

オブジェクトのMicrosoft.Extensions.Configuration.ConfigurationRootは ' 'System.Objectのを[]' 型に変換することができません。

何が問題なのですか?

+0

'.configuration'リストに' .Cast ().ToArray() 'が必要でしょうか? –

答えて

0

"Delegate"に問題がありました。代わりに私は具体的なタイプを使用しました。

_store = new ConcurrentDictionary<string, Creator>(); 

これにより、私はコンストラクタを次のように呼び出すことができました。

var createMe = store["creatorkey"] 
createMe(param1,....) 
関連する問題