autofac绑定到继承基本仓库的存储库

时间:2014-10-13 10:16:32

标签: c# asp.net-web-api autofac

我正在尝试使用我的通用存储库配置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'。确保控制器具有无参数   公共建设者。“

我的设置是否有愚蠢的错误?

0 个答案:

没有答案