используют один интерфейс. Вопрос, как мне реализовать резолв конкретного сервиса?
Что значит используют? Имеют зависимость от этого интерфейса? Внедри и все. Какие проблемы?
Если речь про реализацию интерфейса несколькими сервисами то здесь все написано https://autofac.readthedocs.io/en/latest/advanced/keyed-services.html
Да, есть интерфейс, который реализуют несколько классов. Я-то их внедрю, но как потом реализовать использование конкретного сервиса (класса)? Допустим есть классы SberFormatter и VtbFormatter. Оба они реализуют интерфейс IFormatter. Я внедрил их оба, но мне в зависимости от входных данных нужно использовать тот или иной класс. В этом проблема. Как в Autofac указать, что нужно использовать именно SberFormatter
Спасибо, сейчас почитаю
нужно либо получать коллекцию реализаций и выбирать по параметру, либо делать фабрику, которая эту логику инкапсулирует
Не, выше человек показал, можно использовать именованые параметры)
Благодарю, всё так просто)
можно, но это плохо закончится
В ninject можно указать какую реализацию пихать в зависимости от акцептора
Потому что это логика, за которую не должен отвечать контейнер, чем больше ответственности берет на себя контейнер, тем менее предсказуемое поведение у DI, и тем сложнее потом в этом во всем разбираться. Конкретная описанная задача хорошо решается фабрикой
Понял, спасибо, буду разбираться
Обсуждают сегодня