2013-11-21 22 views
0

我有两个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。

感谢您的任何援助。

+0

,您是否试图单独注册这种依赖性,我会尝试像一些事情。 builder.Register(c => new SystemController(c.Resolve ())); – codeSetter

+0

是的,我试图在RegisterApiControllers调用之后注册每个依赖项。 – sentinel007

+0

builder.Register(c => new SystemController(c.ResolveNamed (“ResourceFactory”),.....) – codeSetter

回答

0

使用

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