Dependency Injectionの基本:Autofacを用いた初歩的なコンテナ構築

Autofacは強力かつ柔軟な依存性注入ライブラリであり、シンプルで効率的な方法でアプリケーション設計をサポートします。以下では、Autofacを使って10分で初めてのDIコンテナを構築する手順を紹介します。

依存性注入とは何か?

依存性注入(Dependency Injection)は、オブジェクトが直接その依存関係を生成することなくそれらを利用できるようにする設計パターンです。これにより、コード間の結合度が低くなり、テストやメンテナンスが容易になります。

Autofacのインストール

プロジェクトにAutofacを追加するには、NuGetパッケージマネージャーを使用します:

Install-Package Autofac

または.NET CLIでもインストール可能です:

dotnet add package Autofac

最初のコンテナ作成

コンテナを作成するには、`ContainerBuilder`クラスを使います:

var builder = new ContainerBuilder();
var container = builder.Build();

サービスの登録

使用前にサービスを登録します。インターフェースと実装クラスの登録例:

builder.RegisterType<ServiceImplementation>().As<IService>();

サービスの解決

登録後、コンテナからサービスを取得できます:

using (var scope = container.BeginLifetimeScope())
{
    var service = scope.Resolve<IService>();
}

異なるライフサイクルのサービス登録

  • トランジェント(Transient):毎回新しいインスタンスを生成
  • シングルトン(Singleton):アプリケーション全体で一つのインスタンスを共有
  • スコープ(Scoped):特定のスコープ内で一つのインスタンスを共有

シングルトンサービスの登録例:

builder.RegisterType<SingletonService>().As<ISingletonService>().SingleInstance();

コンテナ設定の検証

設定が正しいか確認するための機能も提供されています:

container.Validate();

ASP.NETアプリでの利用

ASP.NETアプリケーションでAutofacを使うための統合パッケージがあります:

  • Autofac.Integration.Mvc
  • Autofac.Integration.WebApi

高度な機能:デコレーターパターン

Autofacはデコレーターのサポートがあり、以下の様に簡単に横断的関心事の追加が可能です:

builder.RegisterDecorator();

診断ツール

Autofacには設定エラーを発見するための診断ツールも含まれています。詳細はドキュメントを参照してください。

タグ: Autofac DependencyInjection ASPNETIntegration DesignPatterns

8月4日 03:02 投稿