Castle Windsor Container是否可以让一个组件实现两个不同的接口,然后在解析它时返回相同的组件实例?例如;
var windsor = new WindsorContainer()
.AddComponent<InterfaceA, ClassAB>()
.AddComponent<InterfaceB, ClassAB>();
var classAB1 = windsor.Resolve<InterfaceA>();
var classAB2 = windsor.Resolve<InterfaceB>();
Assert.AreSame(classAB1, classAB2);
Run Code Online (Sandbox Code Playgroud)
如果我按照所示尝试这个,我得到一个异常,消息已经为给定的密钥注册了一个组件,如果我提供了不同的密钥,那么它将返回该类的两个独立实例ClassAB.
编辑:理想情况下,我想在配置文件中执行此操作.
Mau*_*fer 11
[TestFixture]
public class Forwarding {
public interface InterfaceA {}
public interface InterfaceB {}
public class ClassAB: InterfaceA, InterfaceB {}
[Test]
public void tt() {
var container = new WindsorContainer();
container.Register(Component.For<InterfaceA, InterfaceB>().ImplementedBy<ClassAB>());
var a = container.Resolve<InterfaceA>();
var b = container.Resolve<InterfaceB>();
Assert.AreSame(a, b);
}
}
Run Code Online (Sandbox Code Playgroud)