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