Я использую Autofac для IoC в своем проекте. Из-за некоторых устаревших программных библиотек я должен передать некоторые службы контроллеру, который не может быть разрешен, и должен быть передан как параметр.Autofac Разрешить использование фабрики делегатов по типу
Я сделал общий контроль с помощью делегата фабрики, как это:
public MyClass<TController, TInterface> {
private delegate TController ControllerFactory(TInterface service);
protected TController _myController;
protected TController Controller {
get
{
return _controller
?? (_controller = ServiceLocator.Resolve<ControllerFactory>()
.Invoke(this);
}
}
}
Это отлично работает, но для этой работы мне нужно имя параметра обслуживания контроллера и имя параметра делегата службы быть таким же, потому что, как я читал, Autofac пары параметр BY NAME !!
Я видел, как вы можете сделать это по типу регистрирующего класса с общей Func <>, но из-за унаследованной приложение, которое я должен был бы оставить «чистый», то есть регистрации:
containerBuilder.RegisterType<MyController>();
Кто-нибудь знает если возможно, чтобы делегат соответствовал параметру по типу?
Спасибо за ввод ... в любом случае, наконец, я не смог реализовать это решение из-за архитектурных проблем в проекте, которые я не могу изменить по причинам устаревшей совместимости ... но Я помню это для будущих реализаций! –