0

我有一个案例,我需要为同一个接口实例化两个不同的实现,它们都在同一个类中使用。

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

我将如何告诉 unity 第一个IRegisterAutoMapper应该是 type RegisterAutoMapper,第二个应该是 type RegisterAutoMapperMobile

4

1 回答 1

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")));
于 2013-07-11T06:09:20.613 回答