всех проектах использую стандартный DI через конструктор, но на практике столкнулся с проблемой, если в проекте к примеру 100 VM и каждая наследуется от ViewModelBase и по каким то причинам во ViewModelBase понадобилось добавить новую иньекцию, то придется в каждой VM добавлять иньекцию в конструктор и затем передовать в base. Это очень не удобно.
В одном из проектов видел, что во VM передаются не иньекции, а единственный параметр IContext, с единственным методом Reslove. Таким образом даже если во ViewModelBase понадобиться новая зависимость, то достаточно будет прописать одну строчку в конструкторе а не переписывать все уже существующие ViewModel.
Собственно вопрос, может кто то уже использовал данный метод, или хотел но отказался по ряду каких то причин, какие подводные камни могут всплыть при использовании такого подхода?
Это же ServiceLocator
Ну ты у меня спрашивал) и я тебе ответил) Во вьюмодель особенно в базовую должны прокидываться минимум зависимостей. Если зависимостей много пиши классы юзкейсов(которые интеракторы) и прокидывай сервисы туда, а не в базовую вьюмодель, а во вьюмодели уже эти интеракторы прокидывай. В любом случае как по мне гораздо правильнее все делать через конструктор(+есть хоткеи для генерации конструкторов в классах) потому как это важно для возможностей тестирования
Обсуждают сегодня