有没有办法让 Unity 将属性注入(inject)的对象作为 Teardown 的一部分进行处理?
背景是我正在开发一个使用 ASP.NET MVC 2、Unity 和 WCF 的应用程序。我们编写了自己的 MVC Controller 工厂,它使用统一来实例化 Controller ,并使用 Controller 公共(public)属性上的 [Dependency] 属性注入(inject) WCF 代理。在页面生命周期结束时,会调用 Controller 工厂的 ReleaseController 方法,我们调用 IUnityContainer.Teardown(theMvcController)。此时 Controller 已按预期处理,但我还需要处理注入(inject)的 wcf 代理。 (实际上我需要对它们调用 Close 和/或 Abort 而不是 Dispose 但这是后来的问题。)
我当然可以覆盖 Controller 的 Dispose 方法并清理那里的代理,但我不希望 Controller 必须知道注入(inject)接口(interface)的生命周期,甚至它们引用 WCF 代理。
如果我需要自己为此编写代码 - 最好的扩展点是什么?我会很感激任何指针。
最佳答案
我创建了一个统一扩展,它将负责处理由容器在 TearDown 上创建的实例。
见 http://www.neovolve.com/2010/06/18/unity-extension-for-disposing-build-trees-on-teardown/
关于unity-container - 统一处置对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443515/