Unity - 在同一个类中为同一个接口注入不同类的对象

时间:2017-09-22 11:14:31

标签: c# dependency-injection unity-container

我有一个界面:IFoo 实现该接口的两个类:FooOne和FooTwo

一个类ClassOne在构造函数中接收IFoo参数。

我在Classone中有两个方法MethodOne和methodTwo。

如果我调用MethodOne,我需要Classone中的对象FooOne

如果我调用MethodTwo,我需要Classone中的对象FooTwo

我如何配置Unity以便ClassOne接收MethodOne调用的FooOne实例,而ClassOne只使用一个容器接收FooTwo for MethodTwo调用?

主要条件是我需要一次创建一个对象FooOne或FooTwo。

1 个答案:

答案 0 :(得分:1)

使用命名注册:

container.RegisterType<IFoo, FooOne>("one");
container.RegisterType<IFoo, FooTwo>("two");

//...

class Classone
{
    IFoo MethodOne()
    {
        return _container.Resolve<IFoo>("one");
    }

    IFoo MethodTwo()
    {
        return _container.Resolve<IFoo>("two");
    }
}