我正在尝试使用我的通用存储库配置autofac 我正在使用WebApi 2.2并尝试创建通用控制器和通用存储库来执行CRUD操作。
我确实问过这个问题,但我想我可能会过度复杂化问题Binding autofac with webapi using generic repository
我已使用以下配置设置我的项目
的global.asax
var builder = new ContainerBuilder();
// Register the Web API controllers.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// Register other dependencies.
builder.Register(c => new Logger()).As<ILogger>().InstancePerApiRequest();
builder.RegisterType<SkillRepository>()
.As<IDomainService<Skill>>()
.As<ISkill>()
.InstancePerRequest();
// Build the container.
var container = builder.Build();
// Create the depenedency resolver.
var resolver = new AutofacWebApiDependencyResolver(container);
// Configure Web API with the dependency resolver.
GlobalConfiguration.Configuration.DependencyResolver = resolver;
我的控制器
public class SkillsController : BaseController<Skill>
{
private readonly ISkill _skillRepository;
public SkillsController(SkillRepository skillRepository) : base(skillRepository)
{
_skillRepository = skillRepository;
}
存储库
public class SkillRepository : DomainService<Skill>,ISkill
{
private DataContext _db = new DataContext();
//private readonly ILogger _log = null;
public SkillRepository(IDomainService<Skill> repository): base(repository)
{
}
接口
public interface ISkill
{}
域名服务
public class DomainService<T>:IDomainService<T>
{
protected readonly IDomainService<T> Repository;
public DomainService(IDomainService<T> repository)
{
Repository = repository;
}
域名接口
public interface IDomainService<T>
{
Task<T> Add(T entity);
Task<bool> Delete(T entity);
Task<T> Update(T entity);
}
为什么当我尝试拨打我的控制器时,我会收到错误
“尝试创建类型的控制器时发生错误 'SkillsController'。确保控制器具有无参数 公共建设者。“
我的设置是否有愚蠢的错误?