反射で城内のインターフェイスを解決しようとすると、小さな問題が発生しました。城ウィンザー反射によるインターフェイス解像度
私はインターフェイスIService
を持っており、このようにそれを解決することができると言うことができます:
var service = wc.Resolve<IService>();
これは期待通りに動作しますが、私は反射によってメソッドを呼び出すようにしたいと、このようにそれを行うことができます。
MethodInfo method = typeof(WindsorContainer).GetMethod("Resolve",new Type[] {});
MethodInfo generic = method.MakeGenericMethod(typeof(IService));
var service = generic.Invoke(wc,new object[]{});
これも正常に動作します。ここで、リフレクションを使用してリロードするタイプを選択したいと考えてみましょう。その後、
Type selectedType = assembly.GetType("myProject.IService")
そして、このようにそれを起動しよう:
MethodInfo method = typeof(WindsorContainer).GetMethod("Resolve",new Type[] {});
MethodInfo generic = method.MakeGenericMethod(selectedType);
var service = generic.Invoke(wc,new object[]{});
私は城のエラーを取得:
"No component for supporting the service myProject.IService was found"
selectedTypeのタイプが正しいように見えますが、問題があります。
私は解決方法を正しく呼び出すために何ができるか知っていますか?
BTW MakeGenericMethod(typeof(selectedType)
はコンパイルされません。
ありがとうございます。
container.Resolve(selectedType)は同じエラーを生成します。非汎用メソッドについてのポインタをありがとう。 – jheppinstall