Связывание autofac с webapi с использованием универсального репозитория

Я пытаюсь использовать autofac с репозиторием, и я пытаюсь добавить немного обобщений, чтобы попытаться уменьшить количество дублирующегося кода, который я пишу. Однако я иду по кругу, пытаясь заставить работать autofac для меня

Поэтому я создал службу домена и интерфейс, который обрабатывает наши стандартные операции crud.

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

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



    public IQueryable<T> GetQueryable()
    {
        return Repository.GetQueryable();
    }

    public virtual Task<T> Add(T entity)
    {
       return Repository.Add(entity);
    }

Интерфейс:

public interface IDomainService<T>
{
    IQueryable<T> GetQueryable();
    Task<T> Add(T entity);
    Task<bool> Delete(T entity);
    Task<T> Update(T entity);
    Task<T> GetById(int id);
    Task<T> GetByUID(Guid id);
}

Я пользуюсь своим репо ничего особенного

public class SkillRepository : DomainService<Skill>, ISkill
{
    private DataContext _db = new DataContext();
    private readonly ILogger _log = null;

    public SkillRepository(IDomainService<Skill> repository, ILogger log) : base(repository)
    {
        _log = log;
    }
}

Наконец-то, где я подключаю автофак:

 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;

Мой веб-контроллер API выглядит

public class SkillsController : BaseController<Skill>
{
    private readonly ISkill _skillRepository;

    public SkillsController(SkillRepository skillRepository) : base(skillRepository)
    {
        _skillRepository = skillRepository;
    }
}

BaseController

public abstract class BaseController<TEntity> : ApiController
    where TEntity : new()
{
    protected readonly IDomainService<TEntity> DomainService;

    protected BaseController(IDomainService<TEntity> domainService)
    {
        DomainService = domainService;
    }

Я получаю исключение:

«Ни один из конструкторов, найденных с помощью Autofac.Core.Activators.Reflection.DefaultConstructorFinder» для типа «Api.EndPoints.Skills.SkillsController», не может быть вызван с помощью доступных служб и параметров: \ \ Не удается разрешить параметр 'Domain.Repository.SkillRepository skillRepository 'конструктора' Void .ctor (Domain.Repository.SkillRepository) '. "

Есть ли что-то очевидное, что я делаю не так?

Ответы на вопрос(3)

Ваш ответ на вопрос