我正在修改現有代碼庫以更好地使用autofac容器。我遇到的情況是,很多東西用於從經典的ServiceLocator
反模式的容器中直接解析它們的組件。我正在使用LifetimeScope
介紹適當的工作單元方案。檢查組件在最外層是否已解析LifetimeScope
我面臨的問題是,某些組件必須從子項LifetimeScope
中解析出來,因爲它們正在實施IDisposable
並且必須予以處置。如果他們在永遠不會發生的根作用域中解決。
有什麼辦法可以防止某些組件在根作用域中被解析嗎?對此,Crashing運行時是可以的,因爲我正在逐一處理這些情況,並根據需要引入範圍。我能想到的唯一方法就是創建一個虛構的組件,爲根生存期範圍解決一次,並在.InstancePerLifetimeScope()
中解決,將其靜態存儲在某處。然後,當解析後面的組件時,我會得到其中一個虛擬組件,並查看它是否與根作用域中的生命組件相同。這有點笨重,還有更好的方法嗎?