在Autofac的多个组件中使用一个实例
本文关键字:实例 一个 Autofac 组件 | 更新日期: 2023-09-27 17:50:20
所以我有一个IApplicationDbContext
类和一个ApplicationDbContext
类来实现它。在我写的代码中,我使用IApplicationDbContext
,但更高的链MVC使用ApplicationDbContext
,我不能真正改变这一点,所以目前我已经注册了这样的组件:
builder.RegisterType<ApplicationDbContext>()
.AsSelf()
.InstancePerRequest();
builder.RegisterType<ApplicationDbContext>()
.As<IApplicationDbContext>()
.InstancePerRequest();
这并不理想,因为我实际上有两个相同事物的实例。有可能这样做吗?
var dbContextInstance = new ApplicationDbContext();
builder.RegisterInstance(dbContextInstance)
.As<ApplicationDbContext>()
.InstancePerRequest();
builder.RegisterInstance(dbContextInstance)
.As<IApplicationDbContext>()
.InstancePerRequest();
因此,每当构造函数需要ApplicationDbContext
时,它使用ApplicationDbContext
实例,每当它请求IApplicationDbContext
时,它得到相同的ApplicationDbContext
实例。最后只有一个实例,但它用于多种类型。我能做到吗?
一个注册可以针对多个服务。我建议这样写:
builder.RegisterType<ApplicationDbContext>()
.AsSelf()
.As<IApplicationDbContext>()
.InstancePerRequest();