【发布时间】:2015-03-15 08:31:17
【问题描述】:
如果你使用Windsor中的TypedFactoryFacility基于接口为你生成工厂,工厂本身可以注册为Transient。事实证明,工厂将释放它在工厂本身释放后释放时创建的所有瞬态对象。
container.AddFacility<TypedFactoryFacility>();
container.Register(
Types.FromThisAssembly().BasedOn<IFactory>().Configure(
x => x.AsFactory()).LifestyleTransient());
这意味着,如果我将自动生成的工厂创建为瞬态,它可以让我巧妙地忘记 Releaseing 从工厂创建的对象(当然,只要我管理工厂本身的生命周期)。这种瞬态工厂的生命周期将与其他一些瞬态对象相关联,因此当该对象被释放时,工厂以及该工厂创建的所有内容都会被释放。
就我个人而言,我讨厌必须显式地记住Release() 对象,这会大大清理代码,所以这让我非常高兴。但问题是:这是合理的做法吗?这一切似乎太容易了。
每次需要工厂时都创建一个新的工厂实例有什么缺点吗?
我是在给自己挖一个可怕的坑吗?
【问题讨论】:
标签: c# castle-windsor factory castle transient