ReadModelRepository
使い捨てクラスのインスタンスに依存する (しかし所有していない)非使い捨てクラスがありますReadModelDbContext
。内で、オブジェクトが作成されたときにのみ解決さModule
れるように (依存関係ごとに 1 つのインスタンス)、Autofac 3.0.2 コンテナーを構成したいと考えています。ReadModelDbContext
ReadModelRepository
これは私が現在持っているものです:
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
したがって、本質的には、最も外側のコンポーネントの有効期間のスコープが終了したときに呼び出されるように、外側のコンポーネントのコンテキストでのみ依存関係を登録したいと思います。これは可能ですか?