TinyIoc регистрация и интерфейс с несколькими типами

Я пытаюсь зарегистрировать базовый интерфейс IService в TinyIoc

В настоящее время у меня есть несколько классов, которые наследуются от Iservice

например AuthenticationService а также RestService оба наследуются от базового класса Service который реализует Iservice

Я делаю это так, регистрирую каждую услугу отдельно.

container.Register<IAuthenticationService, AuthenticationService>();
container.Register<IRestService, RestService>();

так как они оба наследуют от Service : IService Есть ли способ зарегистрировать оба в одном вызове, или я должен отдельно зарегистрировать каждую услугу?

1 ответ

Там перегрузка для Register метод, который принимает Func, что вы можете использовать, чтобы определить, какой конкретный тип вы хотите вернуть:

var decision = true;
container.Register<IService>((c, npo) =>
{
    // Change it to whatever logic you need to decide which service should be returned
    if (decision)
        return new AuthenticationService();
    else
        return new RestService();
});

var instance = container.Resolve<IService>();
Другие вопросы по тегам