Каждый раз, когда вы запрашиваете Ядро для обслуживания, используя этот IoC.Container.Get<T>
, вы получите другой экземпляр, если используете InCallScope()
. Это то, что вы делаете неправильно.
Вам следует избегать использования этого Service Locator anti-pattern. Этот симптом, с которым вы сталкиваетесь, является явно одним побочным эффектом этого анти-шаблона: вы не знаете, где находится ваш Состав Корень есть.
Без определения вашего корня композиции использование областей видимо бесполезно. При запросе новых экземпляров через Service Locator каждый раз, когда вам нужна зависимость, ядро не может угадать, как разрешить области, и вы обязательно столкнетесь с такой проблемой.
Если вы используете приложение MVC/WebAPI, ваш контроллер, безусловно, будет точкой активации для вашего графа объектов, так как он будет зависеть от зависимостей. Но вы должны оставить это в Ninject, чтобы это работало для вас.
Пакет Nuget Ninject.MVC3 автоматически настраивает ваше веб-приложение для инъекций. Или, если вы не используете веб-приложение, пожалуйста, предоставьте еще несколько примеров кода, чтобы я мог помочь вам определить, что ваш корень состава и как области могут помочь вам решить проблему, с которой вы столкнулись.