ReadModelRepository使い捨てクラスのインスタンスに依存する (しかし所有していない)非使い捨てクラスがありますReadModelDbContext。内で、オブジェクトが作成されたときにのみ解決さModuleれるように (依存関係ごとに 1 つのインスタンス)、Autofac 3.0.2 コンテナーを構成したいと考えています。ReadModelDbContextReadModelRepository
これは私が現在持っているものです:
builder.RegisterType<ReadModelRepository>().As<IReadModelRepository>();
builder.Register(c => new ReadModelDbContext(_connectionStringName)).AsSelf();
ReadModelDbContextただし、モジュールによって提供される登録を使用して、任意のクラスを解決できるようにしたくありません。ReadModelDbContext実際、他のクラスが異なるインスタンスを解決する必要がある可能性があります。
これを解決するにはWithParameter、次のスニペットのように を使用できます。
builder
.RegisterType<ReadModelRepository> ().As<IReadModelRepository> ()
.WithParameter (
(p, c) => p.ParameterType == typeof (ReadModelDbContext),
(p, c) => new ReadModelDbContext (_connectionStringName));
ReadModelDbContextただし、を解決する有効期間スコープReadModelRepository(または実際にはその解決コンポーネントの有効期間) が終了したときに、Autofac が自動的に破棄する必要もあります。を使用するWithParameterと、これは機能しないようです。
Disposeしたがって、本質的には、最も外側のコンポーネントの有効期間のスコープが終了したときに呼び出されるように、外側のコンポーネントのコンテキストでのみ依存関係を登録したいと思います。これは可能ですか?