Да, это может быть прекрасно, особенно в случае something --> transient
.Вещи, о которых вам нужно беспокоиться:
- заставляю ли я этот компонент жить (и оставаться в памяти) дольше, чем следовало бы?
- я не собираюсь в конечном итогеситуация, когда объект, от которого я зависит, освобождается автоматически (как в случае синглтона, который зависит от объекта веб-запроса, который освобождается, когда заканчивается первый веб-запрос).В этом случае вы в конечном итоге будете использовать объект в недопустимом состоянии, которое, в зависимости от того, как вы его реализуете, будет либо вызывать исключение (быстрый сбой), либо плохо себя вести (вы не хотите быть там).
Если вы рассмотрели эти два фактора и, возможно, ряд других факторов, характерных для вашего сценария, вы сможете сделать осознанный выбор, чтобы продолжить работу с зависимостью.
В качестве альтернативы вы можетесделайте его транзитивной зависимостью через слой косвенности:
singleton -(depends on)-> singleton factory -(resolves)-> per-web-request component
.
Одноэлементный объект может зависеть от фабрики, которую он использует для извлечения, скажем, объектов веб-запроса, которыеон использует, чтобы делать свою работу.При этом при правильной реализации у него не будет недостатков, о которых говорилось выше.
Надеюсь, что это поможет.
О, и другой мой ответ, на который вы ссылались в своем вопросе, - этоговорит эмпирическое правило , а не строгий закон.Это, вероятно, правильно в большинстве случаев, но, как уже говорилось выше, это нормально, если вы знаете, что делаете.По этой же причине диагностика Виндзора для выявления этих случаев называется Потенциально неправильно настроенных компонентов