0

同じインターフェイスで、同じクラスで使用される 2 つの異なる実装をインスタンス化する必要がある場合があります。

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

最初のものは typeであり、2番目のIRegisterAutoMapperものは type であるべきだとユニティに伝えるにはどうすればよいでしょうか?RegisterAutoMapperRegisterAutoMapperMobile

4

1 に答える 1

1

IRegisterAutoMapper の複数の名前付きマッピングと、各引数に使用する特定のマッピングを Unity に伝える InjectionConstructor を組み合わせることで、これを行うことができます。

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 に答える