c# - 如何在 CaSTLe.Windsor 中配置提供多个服务的单个组件实例?

标签 c# inversion-of-control castle-windsor

我想配置 Windsor 容器,以便单个单例样式的实例可以通过容器提供两个或更多服务。

我发现在多个组件声明(基于 XML 的配置)中使用相同的类型将导致创建该类型的实例以提供每个组件的服务接口(interface),这不是我想要的行为。

例如:

interface IA { }
interface IB { }
class AB : IA, IB { ... } 

我希望 AB 的一个实例同时提供 IA 和 IB 服务。

我想这样做的具体原因是我的具体 DAO 实现扩展了多个接口(interface)。另一方面,我有几个工作组件,它们包含对不同接口(interface)的引用。具体的 DAO 实例尊重这一点,但这些单独的工作组件的构造函数需要实现它们单独的接口(interface),我希望 CaSTLe.Windsor 通过各自的服务请求将相同的对象实例传递给这些工作容器。

大声笑,我认为这很清楚! :P

有没有人明白我的意思,有没有人知道我如何通过组件的 XML 配置来实现这一点?

最佳答案

您检查过 this question 的答案了吗? (尤其是论坛帖子链接)似乎就是您要找的东西。一些示例使用了 Transient 生命周期,但我认为它也适用于 Singleton。

forum post的主要 yield 是:

container.Register(Component.For<IEntityIndexController, ISnippetController>()
.ImplementedBy<SnippetController>()
.LifeStyle.Transient); 

解决方案是使用流畅的界面(和最近的主干构建),并且我上次看到无法在 xml 中进行配置。然而,它may be possible有设施。

祝你好运!

关于c# - 如何在 CaSTLe.Windsor 中配置提供多个服务的单个组件实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/684257/

相关文章:

C# 代码连接到本地主机中的 mysql。供应商错了吗?

c# - 如何使用 Autofac 注册开放通用接口(interface)的所有实现

c# - CaSTLe DynamicProxy 接口(interface)代理生成

caSTLe-windsor - 我可以告诉 CaSTLe Windsor 在单独的 AppDomain 中创建组件吗?

c# - CaSTLe Windsor 解析通用接口(interface)

c#, oledb 连接字符串问题

c# - 更新父表和子表

c# - 从 WCF 创建客户端查看 SOAP XML

c# - 在温莎城堡注册通用装饰器?

c# - StructureMap 在请求实例时向构造函数提供字符串参数