Autofac自定义生命周期管理器

时间:2012-12-18 19:29:23

标签: c# dependency-injection autofac lifetime

我在Autofac中找不到一种可能性。自定义终身经理。 例如,在Windsor.Castle中,可以编写简单派生自AbstractLifestyleManager的自定义生命周期管理器。

public class MyCustomLifestyleManager : AbstractLifestyleManager
{
 public overrid object Resolve(CreationContext context)
 {
 ...
 }

}

有人知道如何在autofac中这样做吗?我知道有关标准终身经理的问题,但问题是可以自己制作吗?

3 个答案:

答案 0 :(得分:1)

我认为您希望使用自定义生命周期范围,请参阅the Autofac blog post

  

Autofac迎合生命周期范围内的工作单元。终身范围(ILifetimeScope)   就像听起来一样 - 一个完成的范围,一组的生命周期   相关组件将结束。

     

在处理工作单元期间解析的组件实例会关联   终身范围。通过跟踪实例化顺序并确保依赖性可以   只有满足相同或更长寿命范围内的组件,Autofac才能满足   在终身范围结束时负责处置。

This question提供了示例代码。

答案 1 :(得分:0)

您希望实施ILifetimeScopeProvider,例如RequestLifetimeScopeProvider

答案 2 :(得分:0)

除非您在网络应用程序中,否则没有简单的方法来实现您自己的自定义生活方式。 Web应用程序具有生命周期范围提供程序(通常用于请求范围),但其他应用程序则没有。

正如您所注意到的,基于创建对对象执行自定义事务的方法是使用OnActivated或OnActivating事件。还有一个OnRelease允许您在处理时运行自己的自定义逻辑。但是你需要实现自己的扩展,以使机制在语法上看起来很好。

你也可以将委托表达式(lambdas)注册为依赖项,这样你就可以在那里做一些相当漂亮的东西。

在所有这些事情之间,你应该能够完成你想要做的事情。