2012-01-20 14 views
11

私は次のインタフェースとクラスを持っていると仮定すると、 ?AutofacとIDisposableインターフェイス

private static IContainer RegisterServices(ContainerBuilder builder) { 

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

    return 
     builder.Build(); 
} 

また、私が使用しているアプリケーションの種類に応じてさらに手順を実行する必要があります。 (この場合はASP.NET MVCを使用していますが、WCF Web APIプロジェクトとクラスライブラリでautofacを使用することを検討しています)

答えて

11

IDisposableを実装しているコンポーネントのすべてのインスタンスについて、Autofacは親ライフタイムスコープが終了すると、Disposeを呼び出します。ここで追加作業は必要ありません。

ライフタイムスコープを管理するためにAutofacが提供するオプションをよく知るには、@ dotnetstepのリンクに従ってください。

ライフタイムスコープの管理は、タイプ(MVCまたはプレーンなASP.NETなど)だけでなく、特定のアプリケーションに依存する戦略です。 Autofacの作成者によってThis article about lifetimesが話題を詳しく説明しています。

MVC3プロジェクトについては、MVC3 integration guidelinesに従うことをお勧めします。これにより、すべての個々のHTTPリクエストに、作成されたライフタイムスコープが個別に作成されます。 HTTP要求が完了すると、Autofacは関連するライフタイムスコープを終了し、そのスコープで作成されたすべてのディスポーザブルリソースを破棄します。

ASP.NET Webフォームプロジェクトでも、corresponding guidelines

に従うと、同じ効果が得られます。