如何自動處理實現IDisposable
的類,該類是通過DI使用Unity作爲IoC創建的?使用Unity時,您如何自動處置IDisposable?
例如,假設我有以下各層的MVC應用程序:
- MVC
- 服務
- 庫(實現工作模式的單位爲CRUD操作實體框架)
A UnitOfWork
存儲庫層中的類實現IDisposable
接口,並通過Unity使用DI注入服務層。除非我失去了一些東西,而不會自動配置的UnitOfWork
類,你需要通過堆棧覆蓋調用服務(這也需要實現IDisposable
)控制器上的Dispose()
方法,和氣泡,直到你在到達Dispose()
方法UnitOfWork
(或者如果您沒有使用工作單元模式,則相應的存儲庫)。
例如
// controller
protected override void Dispose(bool disposing)
{
if (_serviceLayer != null)
{
_serviceLayer.Dispose();
}
base.Dispose(disposing);
}
// service layer
public override Dispose() {
if (_uow != null)
{
_uow.Dispose();
}
}
// unit of work
public void Dispose() {
if (_context != null)
{
_context.Dispose();
}
}
This thread表明它不被支持? 「只有少數情況下Unity會處理一個實例,它確實不受支持」Unity 3.0中的情況仍然如此。