我有两个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 :(得分:0)
使用
builder.Register(c => new SystemController(c.ResolveNamed<IResourceFactory>("ResourceFactory"), .....)