将AutoFac与Web API控制器和多个构造函数参数一起使用

时间:2013-11-21 19:18:01

标签: asp.net asp.net-web-api autofac

我有两个Web API控制器,每个控制器具有相同的两个构造函数参数,如下所示:

public SystemController(IResourceFactory pResourceFactory, IHttpRequestProcessor pRequestProcessor)

public VersionsController(IResourceFactory pResourceFactory, IHttpRequestProcessor pRequestProcessor)

我希望能够传递IHttpRequestProcessor的不同实现。这可以用AutoFac解析器吗?如果是这样,我将如何注册这些控制器。目前我只使用简单的注册电话:

builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

我也尝试在进行此调用后注册每个依赖项,这是我尝试的内容:

        builder.Register(c => new ResourceFactory()).Named<IResourceFactory>("ResourceFactory").As<IResourceFactory>().InstancePerApiRequest();
        builder.Register(c => new SystemValidator()).Named<IHttpRequestProcessor>("SystemValidator").As<IResourceFactory>().InstancePerApiRequest();
        builder.Register(c => new VersionsValidator()).Named<IHttpRequestProcessor>("VersionsValidator").As<IResourceFactory>().InstancePerApiRequest();

我不确定的部分是我现在是否可以告诉AutoFac将哪个实例用于IHttpRequestProcessor。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用

builder.Register(c => new SystemController(c.ResolveNamed<IResourceFactory>("ResourceFactory"), .....)