gpt4 book ai didi

caSTLe-windsor - 城堡温莎容器能否返回实现 2 个接口(interface)的组件的相同实例

转载 作者:行者123 更新时间:2023-12-04 17:05:48 25 4
gpt4 key购买 nike

CaSTLe Windsor Container 是否可以让一个组件实现两个不同的接口(interface),然后在解析它时返回相同的组件实例?例如;

var windsor = new WindsorContainer()
.AddComponent<InterfaceA, ClassAB>()
.AddComponent<InterfaceB, ClassAB>();

var classAB1 = windsor.Resolve<InterfaceA>();
var classAB2 = windsor.Resolve<InterfaceB>();

Assert.AreSame(classAB1, classAB2);

如果我按所示尝试此操作,则会收到消息“已为给定键注册了一个组件”的异常,如果我提供不同的键,则它将返回类的两个单独实例 ClassAB .

编辑:理想情况下,我想在配置文件中执行此操作。

最佳答案

[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);
}
}

关于caSTLe-windsor - 城堡温莎容器能否返回实现 2 个接口(interface)的组件的相同实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1287497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com