Unity容器具有相同的类型名称,但来自不同的命名空间

时间:2019-11-06 07:01:38

标签: c# unity-container

我必须构建一个统一容器以在我的asp.net项目中注入依赖项。在该项目中,我必须注册两种类型,它们来自不同的名称空间,但名称相同。那么如何将这两种类型注册到一个统一容器中?

container.RegisterType<IType, Type>()
container.RegisterType<IType, Type>();

此处的IType和类型来自不同的命名空间。但是有相同的名字。那么如何在一个容器中注册这两个容器?我正在使用Unity Container版本5.2.0.0

1 个答案:

答案 0 :(得分:0)

我没有使用过Unity,但是假设它与任何其他容器相同,它应该像这样简单:

container.RegisterType<NamespaceA.IType, NamespaceA.Type>()
container.RegisterType<NamespaceB.IType, NamespaceB.Type>();

本质上,类型将使用它们的Type元数据在内部注册,因此容器会将它们视为两个完全独立的类型,就像它们被称为ITypeAITypeB一样。 / p>

然后,在注入它们时,只需确保引用正确的命名空间即可。

如果您都需要它们,请显式引用两个名称空间:

public MyService(NamespaceA.IType aType, NamespaceB.IType bType)

或者,如果您只需要一个,则只需使用using(或显式)引用名称空间,然后按正常方式将其注入:

using NamespaceA;

public class MyService
{
    public MyService(IType aType)
    {
    }
}