Как использовать Autofac для внедрения конкретной реализации в конструктор

У меня есть два класса, которые принимаютILastActivityUpdator в качестве параметра конструктора:UserService а такжеAnonymousUserService.

public AnonymousUserService(ILastActivityUpdator lastActivityUpdator)
{
    if (lastActivityUpdator == null)
    {
        throw new ArgumentNullException("lastActivityUpdator");
    }
    this.lastActivityUpdator = lastActivityUpdator;
}

И похоже, как указано выше дляUserService:

public UserService(ILastActivityUpdator lastActivityUpdator)
{
    if (lastActivityUpdator == null)
    {
        throw new ArgumentNullException("lastActivityUpdator");
    }
    this.lastActivityUpdator = lastActivityUpdator;
}

ILastActivityUpdator Интерфейс имеет один метод:UpdateLastActivity(int userId), Существует две реализации интерфейса:LastActivityUpdator и декоратор называетсяAnonymousUserLastActivityUpdator который наследует отLastActivityUpdator и добавляет некоторые дополнительные функции в метод, например, так:

public class AnonymousUserLastActivityUpdator 
    : LastActivityUpdator, IAnonymousUserLastActivityUpdator
{
    public AnonymousUserLastActivityUpdator()
    { }

    public override void UpdateLastActivity(int userId)
    {
        base.UpdateLastActivity(userId);

        // Extra functionality
    }
}

Теперь я хочу использовать Autofac для подключенияAnonymousUserService сAnonymousUserLastActivityUpdator иUserService сLastActivityUpdator.

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

public interface IAnonymousUserLastActivityUpdator : ILastActivityUpdator
{ }

Тогда я думал, что смогу использоватьIAnonymousUserLastActivityUpdator вAnonymousUserService конструктор и все будет правильно подключено.

К сожалению, он просто всегда использует первую реализацию, будучиIAnonymousUserLastActivityUpdator так как он зарегистрирован раньше (в алфавитном порядке).

Как я могу сделать этоAnonymousUserService получаетAnonymousUserLastActivityUpdator впрыскивается иUserService LastActivityUpdator?

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

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