2013-10-01 29 views
1

有沒有辦法讓Autofac始終在新的生命週期視圖中解析類型?總是解決在新的Lifetimescope中鍵入?

即。

Container.Resolve<MyHandler>().Whatever(); 

現在我需要做的是這樣的:

Container.BeginLifetimeScope().Resolve<MyHandler>().Whatever(); 

這將是很好能夠注入到MyHandler的一類,並且知道是MyHandler的它自己的範圍。

回答

2

Autofac不提供自動啓動每個組件分辨率的新生命週期範圍的方法。

創建生命期範圍實際上是一個過程,您需要非常緊密地控制。生命週期範圍不僅有助於確定組件分辨率的範圍,還可以管理確定性處理您所解決的組件。從內存管理的角度來看,您不應該只在生命週期範圍內啓動,而且在完成時不要處理它們。 未能處置創建的作用域可能會非常容易導致內存泄漏。

這就是爲什麼你總是一個using陳述或者在類似ASP.NET請求生命週期非常緊密集成的方案看BeginLifetimeScope - 這樣你就可以在一個已知點開始的範圍,並確保最終的/處置它。孩子的生命週期範圍一旦創建就不會自動處理 - 這取決於你做清理。

Autofac wiki有一些good information on lifetime scopes here