2013-11-21 2 views
0

У меня есть два контроллера Web API, каждая из которых одни и те же два параметра застройщик следующим образом:Использование AutoFac с контроллером Web API и Multiple застройщик Параметры

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 => новый SystemController (c.Resolve ())); – codeSetter

+0

Да, я попытался зарегистрировать каждую зависимость после вызова RegisterApiControllers. – sentinel007

+0

builder.Register (c => новый SystemController (c.ResolveNamed ("ResourceFactory"), .....) – codeSetter

ответ

0

Использование

builder.Register(c => new SystemController(c.ResolveNamed<IResourceFactory>("ResourceFactory"), .....) 
Смежные вопросы