使用与解析对象相同的名称解析构造函数参数

时间:2010-01-18 09:12:48

标签: inversion-of-control unity-container

说我有这个班级

public class MyObject : IObject
{
    public MyObject(IObject2 object2)
    {

    }
}

我决心:

Container.Resolve<IObject>("SomeName");

是否可以配置Unity,以便每当使用任何名称解析IObject时,IObject2也将使用相同的名称解析(假设它已使用这样的名称注册)?

我正在寻找一种不使用InjectionConstructor的方法,因为我不想为我介绍的每个新名称更新它。

1 个答案:

答案 0 :(得分:2)

这应该有效:

container.RegisterType<IObject2, MyObject2>("someName");
// ...
container.RegisterType<IObject, MyObject>("someName",
    new InjectionConstructor(
        new ResolvedParameter<IObject2>("someName")));

如果要注册更多名称,可以考虑将这个小片段打包成一个可重用的方法,该方法将名称作为输入参数。

我现在附近没有Unity,所以这或多或少来自记忆......