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>();