我正在尝试将autofac连接到我创建的存储库但是我一直收到错误"尝试创建类型为' DummyController'的控制器时发生错误。确保控制器具有无参数的公共构造函数。"
我已经定义了我的界面&回购像
public interface IDomainService<T>
{
...
}
public class DomainService<T>:IDomainService<T>
{
protected readonly IDomainService<T> Repository;
public DomainService(IDomainService<T> repository)
{
Repository = repository;
}
....
}
我使用我的界面和域名服务
我的自定义仓库 public class FooRepository:IDomainService<FooModel>
{
private DataContext db = new DataContext();
private ILogger log = null;
public FooRepository(ILogger logger)
{
log = logger;
}
public interface IFoo:IDomainService<FooModel>
{
....
}
在我的Application_Start配置autofac
中builder.RegisterType<FooRepository>().As<IDomainService<FooModel>>().InstancePerDependency();
最后我的控制器
public class DummyController : ApiController
{
private readonly IFoo _fooRepository;
public DummyController(IFoo repository)
{
_fooRepository = repository;
}
该网站编译正常,但是当我尝试点击我的api端点时,我一直收到错误
尝试创建类型为&#39; DummyController&#39;的控制器时发生错误。确保控制器具有无参数的公共构造函数。
显然我设置了一些错误,但我似乎无法弄清楚出了什么问题。谁能发现什么是错的?
感谢您的帮助
答案 0 :(得分:1)
如果您想将服务用作IFoo
,则需要将其注册为IFoo
。
所以请将注册更改为:
builder.RegisterType<FooRepository>()
.As<IFoo>()
.InstancePerDependency();
如果您仍然需要使用IDomainService<FooModel>
访问,那么您可以写:
builder.RegisterType<FooRepository>()
.As<IDomainService<FooModel>>()
.As<IFoo>()
.InstancePerDependency();