Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Autofac在多个组件中使用一个实例_C#_Asp.net Mvc_Entity Framework_Inversion Of Control_Autofac - Fatal编程技术网

C# 使用Autofac在多个组件中使用一个实例

C# 使用Autofac在多个组件中使用一个实例,c#,asp.net-mvc,entity-framework,inversion-of-control,autofac,C#,Asp.net Mvc,Entity Framework,Inversion Of Control,Autofac,所以我有一个iaapplicationdbcontext类和一个实现它的ApplicationDbContext类。在我编写的代码中,我使用了iaapplicationdbcontext,但更高层次的MVC使用了ApplicationDbContext,我无法真正改变这一点,因此目前我已经注册了如下组件: builder.RegisterType<ApplicationDbContext>() .AsSelf() .InstancePerRequest()

所以我有一个
iaapplicationdbcontext
类和一个实现它的
ApplicationDbContext
类。在我编写的代码中,我使用了
iaapplicationdbcontext
,但更高层次的MVC使用了
ApplicationDbContext
,我无法真正改变这一点,因此目前我已经注册了如下组件:

builder.RegisterType<ApplicationDbContext>()
       .AsSelf()
       .InstancePerRequest();
builder.RegisterType<ApplicationDbContext>()
       .As<IApplicationDbContext>()
       .InstancePerRequest();
builder.RegisterType()
.AsSelf()
.InstancePerRequest();
builder.RegisterType()
.As()
.InstancePerRequest();
这并不理想,因为我有两个相同的实例。有可能这样做吗

var dbContextInstance = new ApplicationDbContext();
builder.RegisterInstance(dbContextInstance)
       .As<ApplicationDbContext>()
       .InstancePerRequest(); 
builder.RegisterInstance(dbContextInstance)
       .As<IApplicationDbContext>()
       .InstancePerRequest();
var dbContextInstance=new ApplicationDbContext();
builder.RegisterInstance(dbContextInstance)
.As()
.InstancePerRequest();
builder.RegisterInstance(dbContextInstance)
.As()
.InstancePerRequest();

因此,每当构造函数需要
ApplicationDbContext
时,它就会使用
ApplicationDbContext
实例,每当它请求
iaapplicationdbContext
时,它就会得到相同的
ApplicationDbContext
实例。最后只有一个实例,但它用于多种类型。我可以这样做吗?

注册可以针对多个服务。我想推荐如下:

builder.RegisterType<ApplicationDbContext>()
       .AsSelf() 
       .As<IApplicationDbContext>()
       .InstancePerRequest();
builder.RegisterType()
.AsSelf()
.As()
.InstancePerRequest();

注册可以针对多个服务。我想推荐如下:

builder.RegisterType<ApplicationDbContext>()
       .AsSelf() 
       .As<IApplicationDbContext>()
       .InstancePerRequest();
builder.RegisterType()
.AsSelf()
.As()
.InstancePerRequest();