我有一个接口,2个类正在使用它。我正在使用统一配置来根据接口识别实例。
现在我想知道如何注册这些类型,以便我可以根据单个接口本身调用适当的实现。
答案 0 :(得分:6)
我就是这样做的:
var container = new UnityContainer().RegisterType<IAmImplementedMoreThanOnce, Implementation1>("Implementation1")
.RegisterType<IAmImplementedMoreThanOnce, Implementation2>("Implementation2")
.RegisterType<IHaveDependencies1, WithDependenciesImplementation1>(new InjectionConstructor(new ResolvedParameter<IAmImplementedMoreThanOnce>("Implementation1")))
.RegisterType<IHaveDependencies2, WithDependenciesImplementation2>(new InjectionConstructor(new ResolvedParameter<IAmImplementedMoreThanOnce>("Implementation2")));
答案 1 :(得分:-4)
你应该注册你想要的任何类型的实例。如果为同一个界面注册两种类型,则只能获得一种类型。每种类型都有一个接口,或者为您注册的类型提供输入参数。 它就像容器,你把你的东西放进去,并随时用正确的钥匙取回。
您可以为从父接口派生的两种类型创建另外两个接口,并为这两种类型注册这两个接口,或者使用输入参数。
e.g。
你有
ClassA:IClass和 ClassB:IClass对吗?
所以,它会是这样的; ClassA:IClassA,ClassB:IClassB和IClassA:IClass,IClassB:Classlass的IClass和寄存器IClassA以及ClassB的IClassB寄存器。
输入参数
RegisterType IClass,ClassA&gt;(“TypeA”);
RegisterType IClass,ClassB&gt;(“TypeB”);
解析IClass&gt;(“TypeA”);
解析IClass&gt;(“TypeB”);
有意义吗?