Когда использовать впрыску свойства?

  1. когда следует использовать инъекцию свойств?
  2. должен ли я использовать инъекцию конструктора по умолчанию, если создание экземпляра полностью контролируется?
  3. Я прав, что с помощью инъекции конструктора я пишу контейнерно-агностический код?

1 ответов


когда следует использовать инъекцию свойств?

вы должны использовать инъекцию свойств в случае, если зависимость действительно необязательна, когда у вас есть локальное значение по умолчанию или когда ваш объектный график содержит циклическую зависимость.

инъекция свойств, однако, вызывает Временное Соединение и при написании строки бизнес-приложений ваши зависимости никогда не должны быть необязательными: вместо этого вы должны применить Null Объект шаблон.

также не следует использовать локальное значение по умолчанию, так как это усложняет тестирование, скрывает зависимость и упрощает настройку зависимости.

также объектные графики не должны иметь циклических зависимостей. Это индикация проблемы в вашем дизайне приложения.

должен ли я использовать инъекцию конструктора по умолчанию, если создание экземпляра полностью контролируется?

да. Инъекция конструктора-лучший способ. Это позволяет легко увидеть, какие зависимости имеет класс, позволяет сделать необходимые зависимости и предотвращает временную связь.

Я прав, что с помощью инъекции конструктора я пишу контейнерно-агностический код?

это правильно. Инъекция конструктора позволяет отложить решение о том, какую библиотеку DI использовать, и используете ли вы вообще библиотеку DI.

для a более подробное объяснение вышеизложенного и многое другое читайте в книге инъекция зависимостей в .NET by Марк Зееман (и я), который является руководством, когда дело доходит до понимания DI и его основных моделей и принципов.