使用 Castle Windsor,我有一个配置了短暂生活方式的组件:
<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 会保留引用?我发现了这个类似的问题,这意味着后者可能是这种情况-但是在检查了那里发布的链接之后,我不确定讨论是关于保持引用,还是关于确保对象在实现 IDisposable 时被释放. 我的对象不需要被处置。
如果 Castle Windsor 保留该实例,是否有任何简单的方法可以防止这种情况(可能通过配置)?
编辑
看来,我需要设置发布跟踪政策。这可以在 xml 配置文件中配置,还是需要在代码中设置?是否可以按组件设置发布跟踪策略?