如何配置Castle Windsor在单个构建中使用相同的grand-child对象

时间:2010-11-17 06:52:50

标签: castle-windsor

Castle Windsor使用短暂的生活方式创建了多个大孩子对象的实例。

对象A依赖于C1和C2。 C1和C2都依赖于GC。

关于积累:

  • 使用StructureMap仅创建1个GC实例并传递给C1和C2。
  • 使用Castle.Windsor为C1和C2创建一个新的GC实例 - 即2个实例。

在我的情况下,GS管理nHibernate会话,C1和C2是域A类使用的存储库。

Castle Windsor返回2个会话,导致跨会话数据错误。

2 个答案:

答案 0 :(得分:0)

这些是瞬态语义 - 每次提供新实例时。 StructureMap在这里使用自定义的生活方式。

为什么你在这里使用短暂的生活方式?不是每个网络请求(如果你在网络应用程序中运行)更合适吗?

如果你没有在网络应用程序中运行,你可能应该有一些其他工作单元(如屏幕),你可以通过自定义的生活方式绑定你的会话。

答案 1 :(得分:0)

谢谢Krzysztof,

我们在批处理应用程序中使用它,我希望每个“逻辑”工作单元有1个会话。 在Web应用程序中,我使用WebApp生活方式(或HttpSession的SM Cache)。

我真正想要的只是短暂的“普通”孩子。所以对于第二次构建,我会得到一个新的GC。我可以创造一种自定义的生活方式,但这是相当多的工作。

CW是否提供对“root”对象或其他构建实例的访问权限,因此我可以在此控制。

谢谢,

SB

PS - 我挑战StructureMap在这里使用自定义的生活方式。