使用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"))
);假设我希望我的默认注册与“命名第二”注册做同样的事情。我可以这么做:
container.RegisterType<IInterface, MyClass>(
new InjectionConstructor(new ResolvedParameter<string>("Named Second"))
);是否存在默认设置(未命名)的方法?注册将指向第二个命名注册,而不是复制整个事件?类似于:
container.RegisterType<IInterface, IInterface("Named Second")>(); // Doesn't work.在这个例子中,它只是一个只有一个参数的构造函数,但是假设构造函数包含8个接口,2个InjectionProperties和一个InjectionMethod,您可能不想重复这个过程,从而冒着去同步的风险。
发布于 2014-12-04 21:13:23
怎么样
container.RegisterType<IInterface>( new InjectionFactory(
c => c.Resolve<IInterface>( "Named Second" ) ) );还没有测试过,但它应该能满足你的需要。
https://stackoverflow.com/questions/27303961
复制相似问题