Причина, по которой это было помечено как устаревшее и будет заменено на внутреннее в будущем, заключается в том, что люди склонны использовать Ninject в качестве указателя службы, если это возможно. Но Service Locator - это антипаттерн , который не должен использоваться. И поскольку мы не хотим предоставлять функциональность, которая помогает создавать плохо спроектированное программное обеспечение, оно будет удалено в будущем.
Если это требует много изменений в вашем коде, это признак того, что ваш код страдает от этого недомогания, и вам действительно следует изменить его на лучший дизайн.
- Ограничьте ваш доступ к ядру до минимума. В MVC практически нет ситуации, когда вам нужно что-то кроме простого конструктора. Поэтому мой первый совет - это рефакторинг в инжектор конструктора, где это возможно.
- В этих очень редких случаях, когда вам нужен доступ к ядру для создания других объектов, вы должны внедрить фабрику в класс, которому нужен новый экземпляр, и внедрить ядро в эту фабрику (если конструктор имеет параметр
Kernel
, он получит экземпляр, делающий инъекцию).
Если вы действительно хотите остаться с сервис-локатором, даже если почти все скажут вам не делать этого, вам придется самостоятельно сохранять статическую ссылку.