C# 如何修复:引发了“Unity.Exceptions.InvalidRegistrationException”类型的异常

C# 如何修复:引发了“Unity.Exceptions.InvalidRegistrationException”类型的异常,c#,dependency-injection,unity-container,C#,Dependency Injection,Unity Container,在我的应用程序中,我创建了SqlRepository,以便使用EF连接到SQL数据库。我使用Unity进行依赖注入。 SqlRepository构造函数如下所示: public SqlRepository(DbContext context) { this.context = context; this.dbSet = context.Set<T>(); } container.RegisterType<IReposito

在我的应用程序中,我创建了SqlRepository,以便使用EF连接到SQL数据库。我使用Unity进行依赖注入。 SqlRepository构造函数如下所示:

 public SqlRepository(DbContext context)
    {
        this.context = context;
        this.dbSet = context.Set<T>();
    }
  container.RegisterType<IRepository<Product>, SqlRepository<Product>>();
  container.RegisterType<IRepository<ProductCategory>, SqlRepository<ProductCategory>>();
在UnityConfig.cs文件中,我注册了如下类:

 public SqlRepository(DbContext context)
    {
        this.context = context;
        this.dbSet = context.Set<T>();
    }
  container.RegisterType<IRepository<Product>, SqlRepository<Product>>();
  container.RegisterType<IRepository<ProductCategory>, SqlRepository<ProductCategory>>();
Product和ProductCategory是具有Id/Name等属性的基本类

我正在获取引发“Unity.Exceptions.InvalidRegistrationException”类型的错误异常。InvalidOperationException:未能为System.Data.Entity.DbContext选择构造函数
请提供帮助。

您的dbcontext是否具有带参数或不带参数的构造函数?容器需要知道从何处获取DbContext对象,因为它在构造函数中是必需的。这里是DbContext构造函数代码:public DataContext:baseDefaultConnection{}您的注入DbContext不是DataContext,似乎您实际上想要注入DataContext,因为默认构造函数就是这样。因此,您需要公共SqlRepositoryDataContext上下文感谢man@JSteward指出您正在注入DbContext,而不是DataContext。实际上DataContext继承了DbContext,所以在SqlRepository构造函数中,我没有传递DataContext,而是错误地传递了DbContext。改变了它,它成功了。谢谢。@arbit您也可以将其保留为DbContext,只注册类型container.RegisterType;