Ash*_*Ash 6 c# castle-windsor inversion-of-control
我想配置Windsor容器,以便单个单例样式的实例可以通过容器提供两个或更多服务.
我发现在多个组件声明(基于XML的配置)中使用相同的类型将导致创建该类型的实例以提供每个组件的服务接口,这不是我想要的行为.
例如:
interface IA { }
interface IB { }
class AB : IA, IB { ... }
Run Code Online (Sandbox Code Playgroud)
我希望AB的一个实例提供IA和IB服务.
我想要这样做的具体原因是我的具体DAO实现扩展了多个接口.另一方面,我有几个工作组件,它们包含对不同接口的引用.具体的DAO实例尊重这一点,但是这些单独的工作组件的构造函数需要实现它们的单独接口,并且我希望Castle.Windsor通过相应的服务请求将相同的对象实例传递给这些工作容器.
大声笑,我认为这很明显是泥!:P
有没有人明白我的意思,有没有人有任何想法如何通过组件的XML配置实现这一点?
您是否检查过这个问题的答案(尤其是论坛帖子链接),它似乎就是您正在寻找的内容。一些示例使用 Transient 生命周期,但我认为它也适用于 Singleton。
论坛帖子的主要回报是:
container.Register(Component.For<IEntityIndexController, ISnippetController>()
.ImplementedBy<SnippetController>()
.LifeStyle.Transient);
Run Code Online (Sandbox Code Playgroud)
解决方案是使用流畅的界面(以及最近的主干构建),并且无法在我上次看到的 xml 中进行配置。然而,通过设施这是可能的。
祝你好运!