我正在调整最初为Windsor编写的一些代码以使用StructureMap。在Windsor示例中,我们释放了处理程序。是否有必要对“按请求”缓存的StructureMap实例执行此操作?代码是:
foreach (var handler in ObjectFactory.GetAllInstances<IHandle<TEvent>>()) {
handler.Handle(@event);
// do I need to dispose here?
}
// or should I do this:
ObjectFactory.EjectAllInstancesOf<IHandle<TEvent>>();
由于 本
答案 0 :(得分:3)
StructureMap根本不会保留对“预请求”实例的引用,因此您不必采取任何步骤来告诉StructureMap释放它们。
但是,如果检索到的服务需要明确处理(因为它们实现了IDisposable
),那么处置它们仍然是您的责任。 StructureMap只为您提供实例,并由您自己适当地使用它。
有一个例外 - 如果从嵌套容器中检索IDisposable实例,则在放置嵌套容器时将在实例上调用Dispose()
。