始终在新Lifetimescope中解析类型?

时间:2013-10-01 07:03:09

标签: autofac

有没有办法让Autofac始终在新的生命周期中解析类型?

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

现在我必须这样做:

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

能够将MyHandler注入类并知道MyHandler是它自己的范围会很好。

1 个答案:

答案 0 :(得分:2)

Autofac不提供按组件分辨率自动启动新生命周期范围的方法。

创建生命周期范围实际上是您需要控制非常紧密的过程。生命周期范围不仅有助于组件解析的范围,还可以管理您解决的组件的确定性处理。从内存管理的角度来看,您不应该只是启动生命周期范围而不必在完成后处理它们。 未能处理创建的范围很容易导致内存泄漏。

这就是始终BeginLifetimeScope语句中或在非常紧密集成的场景(如ASP.NET请求生命周期)中查看using的原因 - 因此您可以在一个已知的地方,一定要结束/处置它。子项生命周期范围在创建后不会自动处理 - 您可以自行清理。

Autofac wiki有一些good information on lifetime scopes here