我正在使用 Castle Windsor 和 DynamicProxy 从头开始实现持久性延迟加载(我知道 NHibernate 可能是一个选项等)。我已经实现了一个自定义组件激活器来始终将我的业务类实例化为代理。
我对组件激活器的生活方式有疑问(Castle Windsor 组件激活器的预期生活方式是什么?)。Krzysztof Kozmic 友好地回答说“Windsor 中的每个组件都会有自己的激活器实例”。
面对我的应用程序中的大内存泄漏,我发现永远不会调用此类中的显式析构函数(至少在我的情况下)。Castle 是否适当地释放了激活器,即在处理类型工厂时?
Classes
.FromAssemblyContaining(typeof(QuantityType))
.InNamespace(typeof(QuantityType).Namespace)
.WithService.DefaultInterfaces()
.Configure(reg => { reg.Activator<ColMsProxyComponentActivator>(); })
.LifestyleTransient() // We really want new entities every time a new one is requested
附带说明一下,能够显式声明组件激活器的生活方式不是很有用吗?就我而言,它没有理由不能是单例,这样可以节省一些内存和处理。