gpt4 book ai didi

c# - CaSTLe - 使用工厂方法和 Transient Lifestyle

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:57 25 4
gpt4 key购买 nike

我的应用程序启动方法中有以下代码以及设置容器和工厂支持的代码。工厂方法似乎只被调用一次而不是每次 session 是需要的。

_container.Kernel.Register(
Component.For<ISession>().LifeStyle.Transient
.UsingFactoryMethod(() =>
{
//Any line of code will only be hit once the first time ISession is requested.
}));

我最初使用主干中的 build 1509,但更新为 build 1548同样的结果。如果您需要更多信息以提供帮助,请告诉我我。

注意:这是交叉发布到等待批准的城堡邮件列表。

注意 2: 此代码适用于最新发布的 windsor 版本。然而,我们正在处理主干构建,因为我们需要来自变更集 5927(由 mausch 于 2009 年 8 月 13 日创建)的功能。

参见:

  1. Register Multiple Components for Single Interface Using Castle Windsor
  2. http://fisheye2.atlassian.com/changelog/castleproject/?cs=5927

最佳答案

你为什么不为这个组件使用 PerWebRequest 生命周期,或者更好的是 Windsor 的 NHibernate 集成工具?

现在回到真正的问题。

您的代码无法运行,因为它有错误。您没有将引用存储在当前的 HttpContext 中。您正在 HttpContext 中存储一个引用,该引用是对您传递的委托(delegate)的第一次调用的当前引用。匿名委托(delegate)(或包含它的匿名类)存储对 HttpContext 的第一个实例的引用,因此您的 if 条件只会在请求第一次到达时为 false。

关于c# - CaSTLe - 使用工厂方法和 Transient Lifestyle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882839/

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