Ich habe ein kleines Problem beim Versuch, eine Schnittstelle in Castle mit Hilfe von Reflektion zu lösen.Castle Windsor Interface-Auflösung über Reflexion
Lets sagen, ich habe eine Schnittstelle IService
, und es so lösen können:
var service = wc.Resolve<IService>();
Dies funktioniert wie erwartet, aber ich möchte die Methode durch Reflexion nennen und kann so tun, wie folgt:
MethodInfo method = typeof(WindsorContainer).GetMethod("Resolve",new Type[] {});
MethodInfo generic = method.MakeGenericMethod(typeof(IService));
var service = generic.Invoke(wc,new object[]{});
Das funktioniert auch gut. Nun stellen wir uns vor, ich möchte den Typ auswählen, der durch Reflektion wiederbelebt werden soll.
Type selectedType = assembly.GetType("myProject.IService")
Und dann versuchen, es wie folgt aufzurufen:
MethodInfo method = typeof(WindsorContainer).GetMethod("Resolve",new Type[] {});
MethodInfo generic = method.MakeGenericMethod(selectedType);
var service = generic.Invoke(wc,new object[]{});
ich ein Schloss Fehler:
"No component for supporting the service myProject.IService was found"
Die Art der selectedType scheint korrekt zu sein, aber es ist ein Problem, .
Weiß jemand, was ich tun kann, um die Auflösungsmethode korrekt aufzurufen?
BTW MakeGenericMethod(typeof(selectedType)
wird nicht kompiliert.
Vielen Dank im Voraus
container.Resolve (selectedType) erzeugt den gleichen Fehler. Danke für den Hinweis auf die nicht generische Methode. – jheppinstall