有没有办法让Autofac始终在新的生命周期中解析类型?
即
Container.Resolve<MyHandler>().Whatever();
现在我必须这样做:
Container.BeginLifetimeScope().Resolve<MyHandler>().Whatever();
能够将MyHandler注入类并知道MyHandler是它自己的范围会很好。
答案 0 :(得分:2)
Autofac不提供按组件分辨率自动启动新生命周期范围的方法。
创建生命周期范围实际上是您需要控制非常紧密的过程。生命周期范围不仅有助于组件解析的范围,还可以管理您解决的组件的确定性处理。从内存管理的角度来看,您不应该只是启动生命周期范围而不必在完成后处理它们。 未能处理创建的范围很容易导致内存泄漏。
这就是始终在BeginLifetimeScope
语句中或在非常紧密集成的场景(如ASP.NET请求生命周期)中查看using
的原因 - 因此您可以在一个已知的地方,一定要结束/处置它。子项生命周期范围在创建后不会自动处理 - 您可以自行清理。
Autofac wiki有一些good information on lifetime scopes here。