Предположим, у меня есть BaseForm
, который зависит от ILogger
или IResourceManager
или чего-то в этом роде. В настоящее время он решает правильную реализацию требуемой службы с помощью локатора служб, который, как я знаю, является анти-шаблоном.
- Является ли использование инъекции конструктора правильным способом устранения такой зависимости?
- Должен ли я регистрировать свой
BaseForm
(и его производные типы) в контейнере, чтобы создавать их экземпляры с разрешенными зависимостями? Разве это не все усложняет? - Плохо ли использовать статическую фабрику, обернутую вокруг локатора сервисов?
- Помимо модульного тестирования, действительно ли я буду наказан за использование антипаттерна локатора служб?
Извините, что задаю сразу много вопросов. Я прочитал следующие вопросы SO и многие другие, но их чтение только усугубило мое замешательство: