Autofac 和 IDisposable 接口

2024-01-13

假设我有以下接口和类:

public interface IFooRepo : IDisposable { 

    //...
}

public FooRepo : IFooRepo { 

    //Methods here

    //Properly implement the IDisposbale.Dispose() here
}

我在我的应用程序中使用 Autofac 作为 IoC 容器,如果我按如下方式注册它,我可以确定它会被正确处理吗?

private static IContainer RegisterServices(ContainerBuilder builder) { 

    builder.RegisterType<FooService>().As<IFooService>();

    return
        builder.Build();
}

或者我应该根据我正在使用的应用程序类型采取进一步的步骤。 (在本例中,我使用 ASP.NET MVC,但我正在考虑在 WCF Web API 项目和类库中使用 autofac)


Autofac 调用Dispose对于实现组件的所有实例IDisposable一旦他们的父生命周期结束。您不需要在这里做任何额外的工作。

要熟悉 Autofac 提供的用于管理生命周期范围的选项,请点击 @dotnetstep 的链接。

管理生命周期范围是一种策略,它不仅取决于您的特定应用程序的类型(MVC 或普通 ASP.NET 或其他)。这篇关于生命周期的文章 http://nblumhardt.com/2011/01/an-autofac-lifetime-primer/Autofac 的创建者对这个主题进行了深入的解释。

对于 MVC3 项目,我建议您遵循MVC3 集成指南 http://code.google.com/p/autofac/wiki/Mvc3Integration。这将使所有单独的 HTTP 请求都有为其创建的单独的生命周期范围。一旦 HTTP 请求完成,Autofac 将完成关联的生命周期范围并处置在该范围内创建的所有一次性资源。

对于 ASP.NET WebForms 项目,可以通过以下方式实现相同的效果相应的指导方针 http://code.google.com/p/autofac/wiki/AspNetIntegration

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Autofac 和 IDisposable 接口 的相关文章

随机推荐