Я столкнулся с небольшой проблемой при попытке разрешить интерфейс в замке с помощью отражения.
Допустим, у меня есть интерфейс 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"
Тип выбранного типа указан правильно, но есть проблема.
Кто-нибудь знает, что я могу сделать, чтобы правильно вызвать метод разрешения?
Кстати MakeGenericMethod(typeof(selectedType)
не компилируется.
Заранее спасибо