2012-01-20 3 views
11

Если предположить, что у меня есть следующий интерфейс и класс:Autofac и IDisposable интерфейс

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, но я рассматриваю возможность использования autofac в проекте WCF Web API и библиотеке классов)

ответ

11

Autofac вызывает Dispose для всех экземпляров компонентов, реализующих IDisposable, после завершения срока их родительской продолжительности жизни. Вам не нужно делать никаких дополнительных работ здесь.

Чтобы ознакомиться с опциями, предоставленными Autofac для управления областями времени жизни, следуйте ссылкам @ dotnetstep.

Управление областями времени жизни - это стратегия, которая зависит от вашего конкретного приложения не только от его типа (MVC или простого ASP.NET или что-то еще). This article about lifetimes автор Autofac дает глубокое объяснение темы.

Что касается проекта MVC3, я рекомендую вам следовать за MVC3 integration guidelines. Это приведет к тому, что для каждого отдельного HTTP-запроса будут созданы отдельные шкалы времени жизни, созданные для них. Как только HTTP-запрос будет завершен, Autofac завершит связанную продолжительность жизни и удалит все доступные ресурсы, созданные в этой области.

Такой же эффект может быть достигнут для проекта ASP.NET WebForms, следуя corresponding guidelines

1

Эта часть входит в управление жизненным циклом в IOC или DI Container.

Поскольку вы используете AutoFac, ссылка может вам помочь. http://autofac.readthedocs.io/en/latest/lifetime/disposal.html

Также ознакомьтесь с разделом «Контроль объема и срока службы» для автофактора.

Смежные вопросы