Unity Container 相同的类型名称但来自不同的命名空间
Unity Container same type name but from different Namespaces
我必须构建一个统一容器以在我的 asp.net 项目中注入依赖项。在那个项目中,我必须注册两种来自不同命名空间但名称相同的类型。那么如何将这两种类型注册到一个统一容器中呢?
container.RegisterType<IType, Type>()
container.RegisterType<IType, Type>();
这里的 ITypes 和 Types 来自不同的命名空间。但是有相同的名字。那么我怎样才能在一个容器中同时注册呢?我使用的是 Unity Container 版本 5.2.0.0
我没用过Unity,但假设它和其他任何容器一样,应该就这么简单:
container.RegisterType<NamespaceA.IType, NamespaceA.Type>()
container.RegisterType<NamespaceB.IType, NamespaceB.Type>();
本质上,类型将使用它们的 Type
元数据在内部注册,因此容器会将它们视为两个完全独立的类型,就好像它们被称为 ITypeA
和 ITypeB
.
然后当你注入它们时,你只需要确保你引用了正确的命名空间。
如果您同时需要它们,请显式引用这两个命名空间:
public MyService(NamespaceA.IType aType, NamespaceB.IType bType)
或者,如果您只需要一个,则只需使用 using
(或显式)引用命名空间并正常注入:
using NamespaceA;
public class MyService
{
public MyService(IType aType)
{
}
}
我必须构建一个统一容器以在我的 asp.net 项目中注入依赖项。在那个项目中,我必须注册两种来自不同命名空间但名称相同的类型。那么如何将这两种类型注册到一个统一容器中呢?
container.RegisterType<IType, Type>()
container.RegisterType<IType, Type>();
这里的 ITypes 和 Types 来自不同的命名空间。但是有相同的名字。那么我怎样才能在一个容器中同时注册呢?我使用的是 Unity Container 版本 5.2.0.0
我没用过Unity,但假设它和其他任何容器一样,应该就这么简单:
container.RegisterType<NamespaceA.IType, NamespaceA.Type>()
container.RegisterType<NamespaceB.IType, NamespaceB.Type>();
本质上,类型将使用它们的 Type
元数据在内部注册,因此容器会将它们视为两个完全独立的类型,就好像它们被称为 ITypeA
和 ITypeB
.
然后当你注入它们时,你只需要确保你引用了正确的命名空间。
如果您同时需要它们,请显式引用这两个命名空间:
public MyService(NamespaceA.IType aType, NamespaceB.IType bType)
或者,如果您只需要一个,则只需使用 using
(或显式)引用命名空间并正常注入:
using NamespaceA;
public class MyService
{
public MyService(IType aType)
{
}
}