使用Unity,您可以注册一个接口,以便它解析带有一些参数的类型,并且您也可以进行命名注册:
container.RegisterType<IInterface, MyClass>(
new InjectionConstructor(new ResolvedParameter<string>("Default"))
);
container.RegisterType<IInterface, MyClass>(
"Named First",
new InjectionConstructor(new ResolvedParameter<string>("Named First"))
);
container.RegisterType<IInterface, MyClass>(
"Named Second",
new InjectionConstructor(new ResolvedParameter<string>("Named Second"))
);
让我们说我希望我的默认注册与&#34;命名为Second&#34;注册。我能做到这一点:
container.RegisterType<IInterface, MyClass>(
new InjectionConstructor(new ResolvedParameter<string>("Named Second"))
);
有没有办法让默认(未命名?)注册点朝向第二个命名注册,而不是复制整个事情?类似的东西:
container.RegisterType<IInterface, IInterface("Named Second")>(); // Doesn't work.
在这个例子中,它只是一个带有一个参数的构造函数,但是让我们说构造函数需要8个接口,2个InjectionProperties和一个InjectionMethod,你不想复制它,冒着风险不同步。
答案 0 :(得分:1)
怎么样
container.RegisterType<IInterface>( new InjectionFactory(
c => c.Resolve<IInterface>( "Named Second" ) ) );
没有测试过,但它应该只做你需要的。