我有ReadModelRepository
一个依赖于(但不拥有)一次性类实例的非一次性类ReadModelDbContext
。在 aModule
中,我想配置我的 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));
但是,我还需要 Autofac 在解析(或实际上是其解析组件ReadModelDbContext
的)生命周期范围结束时自动处理。ReadModelRepository
使用WithParameter
,这似乎不起作用。
因此,从本质上讲,我只想在外部组件的上下文中注册一个依赖项,并在Dispose
最外部组件的生命周期范围结束时调用。这可能吗?