- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
使用 CaSTLe Windsor,我有一个配置了 transient 生活方式的组件:
<component id="publish.mapping.default"
service="IMyService, MyAssembly"
type="MyServiceImplementation, Myassembly"
lifestyle="transient" />
将像这样使用:
var service = container.Resolve<IMyService>(componentId);
// service usage ....
// service goes out of scope ...
我的问题是,服务实例在超出范围后会被垃圾回收,还是 CaSTLe Windsor 会保留引用?我找到了 this similar question ,这意味着后者可能是这种情况——但在检查了那里发布的链接之后,我不确定讨论是关于保留引用,还是关于确保对象在实现 IDisposable 时被处置。我的对象不需要处理。
如果 CaSTLe Windsor 持有实例,是否有任何简单的方法来防止这种情况(可能通过配置)?
编辑
看来,我需要设置发布跟踪策略。这可以在 xml 配置文件中配置,还是需要在代码中设置?可以在每个组件的基础上设置发布跟踪策略吗?
最佳答案
默认情况下,容器包含对您的对象(即使是临时对象)的引用。
但是,正如@Bittercoder 在 Why does Castle Windsor hold onto transient objects? 中指出的那样, 你可以 change the release tracking policy .看来选择
LifecycledComponentsReleasePolicy
:
var policy = container.Kernel.ReleasePolicy;
container.Kernel.ReleasePolicy = LifecycledComponentsReleasePolicy;
但自从提出问题以来,这似乎已成为默认策略。
关于c# - 温莎城堡 : Will my transient component be garbage collected?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578593/
所以我目前有一个主 DAO 类 ITrackingToolDAO,它包含我的每个业务实体的所有服务契约(Contract)。 public partial interface ITrackingToo
您好,已将以下组件注册到 CaSTLe Windsor 中: public class CommandDispatcher : IServiceCommandDispatcher { priv
我刚刚下载了动态对象框架Clay我遇到了关于 castle project 的问题版本。 Clay 使用“城堡”v2.0 的功能,而我有一个项目已经开始引用 v2.5。不用说只是为了让事情更有趣,我是
我在将 CaSTLe Windsor Controller Factory 与新的 RenderAction 方法结合使用时遇到了问题。我收到以下错误消息: Controller “MyControl
我试图让 Windsor 为每个请求提供一个实例 ISession,它应该被注入(inject)到所有存储库中 这是我的容器设置 container.AddFacility().Register(
我一直在尝试配置 Windsor 以根据正在构建的类为服务提供不同的实现: 我读过这个 http://docs.castleproject.org/Windsor.Registering-compon
我正在查看 ProDiner 示例 MVC 项目。我将 CaSTLe Windsor 引用从 2 更新为 3。 public static void RegisterAllFromAssemblies
我们在 Windsor 容器上使用 NoTrackingReleasePolicy,因为当我们在使用后不释放我们的组件时会发生内存泄漏。现在考虑以下问题。 一些一次性组件: public class
我是一名优秀的程序员,十分优秀!