2013-07-10 3 views
0

У меня есть случай, когда мне нужно создать экземпляр для одного и того же интерфейса двух разных реализаций, которые используются в одном классе.Instantate with Unity два объекта одного и того же интерфейса в одном классе

public AutoMapperRegisterFactory(IRegisterAutoMapper registerAutoMapper , IRegisterAutoMapper registerAutoMapperMobile) 
{ 
    m_RegisterAutoMapper = registerAutoMapper; 
} 

Как бы идти о рассказывать единства, что первый IRegisterAutoMapper должен быть типа RegisterAutoMapper и второго типа RegisterAutoMapperMobile?

ответ

1

Вы можете сделать это с несколькими именованными сопоставлениями для IRegisterAutoMapper в сочетании с InjectionConstructor, сообщающим Unity о том, какие конкретные сопоставления использовать для каждого аргумента.

IUnityContainer container = new UnityContainer() 
    .RegisterType<IRegisterAutoMapper, RegisterAutoMapper>() //default 
    .RegisterType<IRegisterAutoMapper, MobileRegisterAutoMapper>("Mobile") 
    .RegisterType<AutoMapperRegisterFactory>(
     new InjectionConstructor(
      typeof(IRegisterAutoMapper), 
      new ResolvedParameter<IRegisterAutoMapper>("Mobile"))); 
Смежные вопросы