Я не могу говорить с Unity специально, но контейнеры IoC, как правило, пытаются использовать самый конкретный конструктор, который они могут найти , потому что это конструктор .
Если есть конструктор, который принимает две зависимости для внедрения, то, вероятно, они требуются для использования объекта; конструктор по умолчанию должен будет что-то сделать для их выполнения, если контейнер вызывает его. Работа контейнера состоит в том, чтобы выполнять зависимости, так почему бы он оставил это на усмотрение класса, если он не получил указание оставить его классу?
На ваш конкретный вопрос, согласно вашему коду:
private static void RegisterContainer(IUnityContainer container)
{
container
.RegisterType<IUserService, UserService>()
.RegisterType<IFacebookService, FacebookService>();
}
IUserRepository
не зарегистрирован. Добавьте строку как
.RegisterType<IUserRepository, UserRepository>()