Dependency injection autofac注入失败,带有通用接口&;回购

Dependency injection autofac注入失败,带有通用接口&;回购,dependency-injection,autofac,Dependency Injection,Autofac,我正在尝试将autofac连接到我创建的存储库,但是我不断收到一个错误“尝试创建“DummyController”类型的控制器时出错。请确保该控制器具有无参数公共构造函数。” 我已经定义了我的接口&类似回购 public interface IDomainService<T> { ... } public class DomainService<T>:IDomainService<T> { protected readonly IDomain

我正在尝试将autofac连接到我创建的存储库,但是我不断收到一个错误“尝试创建“DummyController”类型的控制器时出错。请确保该控制器具有无参数公共构造函数。”

我已经定义了我的接口&类似回购

public interface IDomainService<T>
{
   ...

}

public class DomainService<T>:IDomainService<T>
{
    protected readonly IDomainService<T> Repository;

    public DomainService(IDomainService<T> repository)
    {
        Repository = repository;
    }

    ....
}
该网站编译正常,但当我尝试点击我的api端点时,我不断得到一个错误

尝试创建“DummyController”类型的控制器时出错。确保控制器具有无参数公共构造函数

显然,我设置了一些错误的东西,但我似乎无法找出什么是错误的。谁能看出哪里出了问题


感谢您的帮助

如果您想将您的服务作为
IFoo
使用,则需要将其注册为
IFoo

因此,请将您的注册更改为:

builder.RegisterType<FooRepository>()
       .As<IFoo>()
       .InstancePerDependency();
builder.RegisterType()
.As()
.InstancePerDependence();
如果您还需要使用
IDomainService
访问,则可以编写:

builder.RegisterType<FooRepository>()
       .As<IDomainService<FooModel>>()
       .As<IFoo>()
       .InstancePerDependency();
builder.RegisterType()
.As()
.As()
.InstancePerDependence();

Thank@nemesv我在尝试第二个建议时出错,类型“MyApp.Domain.Repository.FooRepository”不可分配给服务“MyApp.Domain.Interfaces.IFoo”。我现在明白了。您需要使用
公共类foodrepository:IDomainService,IFoo
foodrepository
中实现
IFoo
。或者,您可以在控制器中使用
IDomainService
(IDomainService存储库)
  public class DummyController : ApiController
{
    private readonly IFoo _fooRepository;

    public DummyController(IFoo repository)
    {
        _fooRepository = repository;
    }
builder.RegisterType<FooRepository>()
       .As<IFoo>()
       .InstancePerDependency();
builder.RegisterType<FooRepository>()
       .As<IDomainService<FooModel>>()
       .As<IFoo>()
       .InstancePerDependency();