Единство внедрения зависимостей - условное разрешение

Условное разрешение - последнее, чего я не понимаю в данный момент.

Допустим, у нас есть интерфейсIAuthenticate:

public interface IAuthenticate{
    bool Login(string user, string pass);
}

Теперь у меня есть два типа аутентификации.

Твиттер авторизация

public class TwitterAuth : IAuthenticate
{
  bool Login(string user, string pass)
{
   //connect to twitter api
}

}

Facebook Auth

public class FacebookAuth: IAuthenticate
{
  bool Login(string user, string pass)
{
   //connect to fb api
}

}

Регистрация типов в едином конфиге:

unityContainer.RegisterType<IAuthenticate, TwitterAuth>();
unityContainer.RegisterType<IAuthenticate, FacebookAuth>();

вводить объекты через DI в нашем контроллере:

private readonly IAuthenticate _authenticate;

public AuthenticateController(IAuthenticate authenticate)
{
    _authenticate = authenticate;
}



// login with twitter
public virtual ActionResult Twitter(string user, string pass)
{
    bool success =
            _authenticate.Login(user, pass);
}



// login with fb
public virtual ActionResult Facebook(string user, string pass)
{
    bool success =
            _authenticate.Login(user, pass);
}



// login with google
public virtual ActionResult Google(string user, string pass)
{
    bool success =
            _authenticate.Login(user, pass);
}

Как именно Unity узнает, какой объект нужно разрешить для разных типов аутентификации? Как мне сделать условное разрешение в этом случае?

Я говорил с моим другом, и он объяснил, что если эта ситуация кажется неправильной, но это просто фабричный образец.

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

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