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