J'ai rencontré un petit problème en essayant de résoudre une interface dans le château en utilisant la réflexion.Castle Windsor Résolution d'interface par réflexion
Disons que j'ai une interface IService
, et peut le résoudre comme ceci:
var service = wc.Resolve<IService>();
Cela fonctionne comme prévu, mais je veux appeler la méthode par la réflexion et peut le faire comme ceci:
MethodInfo method = typeof(WindsorContainer).GetMethod("Resolve",new Type[] {});
MethodInfo generic = method.MakeGenericMethod(typeof(IService));
var service = generic.Invoke(wc,new object[]{});
Cela fonctionne également très bien. Maintenant, imaginons que je veux sélectionner le type à supprimer en utilisant la réflexion.
Type selectedType = assembly.GetType("myProject.IService")
Et puis essayez de l'appeler comme ceci:
MethodInfo method = typeof(WindsorContainer).GetMethod("Resolve",new Type[] {});
MethodInfo generic = method.MakeGenericMethod(selectedType);
var service = generic.Invoke(wc,new object[]{});
J'obtiens une erreur Castle:
"No component for supporting the service myProject.IService was found"
Le type de selectedType semble être correct, mais il y a un problème .
Est-ce que quelqu'un sait ce que je peux faire pour invoquer la méthode de résolution correctement?
BTW MakeGenericMethod(typeof(selectedType)
ne compile pas.
Merci à l'avance
container.Resolve (selectedType) produit la même erreur. Merci pour le pointeur sur la méthode non générique. – jheppinstall