我在我的项目中使用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>();
有谁知道如果可以通过类型使委托匹配参数?
感谢您的输入...无论如何,由于项目中的架构问题,我无法为了兼容性原因而更改,最终无法实现此解决方案...但我会牢记未来的实施! – 2015-02-20 09:45:19