我有一个单独的接口,这被两个类使用。我使用统一配置来识别基于接口的实例。
现在我想知道我应该如何注册这些类型,以便能够基于单个接口本身调用适当的实现。
我就是这样做的:
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")));
您应该注册任何您想要的类型的实例。若你们为同一个接口注册了两种类型,你们就得到了唯一的一种。每个类型有一个接口,或者您为注册的类型提供输入参数。它就像一个容器,你可以把你的东西放进去,随时用正确的钥匙把它拿回来。
您可以为从父接口派生的两个类型创建另一个两个接口,并为两个类型注册这两个接口;或者使用输入参数。
例如
你有
A类:I类和B级:I级,对吧?
所以,它会像;ClassA:IClassA、ClassB:IClassB和IClassA:ICClass、IClassB:IClass,并为ClassA注册IClassA,为ClassB注册IClassB。
输入参数
RegisterType IClass,ClassA>("TypeA")
RegisterType IClass,ClassB>("TypeB")
解析IClass>("TypeA")
解析IClass>("TypeB");
有道理吗?