Как использовать метод IsSingletonScope от Ninject? - PullRequest
0 голосов
/ 14 мая 2011

У меня есть следующие привязки Ninject в моем проекте.

    Bind<IThingsDataContext>().To<ThingsDataContext>().InSingletonScope();
    Bind<IThingViewModel>().To<ThingViewModel>();
    Bind<IThingsListViewModel>().To<ThingsListViewModel>();

Мне нужно внедрить IThingsDataContext в ThingViewModel и ThingsListViewModel через конструктор, и это должно быть то же самоеIThingsDataContext.

Но когда я делаю

_kernal.Get<IThingViewModel>();
_kernal.Get<IThingsListViewModel>();

, я вижу два разных экземпляра IThingsDataContext, введенных в модели представления!Я что-то не так делаю с привязками или неправильно использую IsSingletonScope?

1 Ответ

0 голосов
/ 16 июня 2011

Я только что вернулся к использованию Ninject, поэтому я немного заржавел, но это звучит как проблема синглтона, с которой я столкнулся при переходе с Ninject 1.0 на 2.0.Вы можете прочитать больше подробностей в моем блоге , но я думаю, что вы хотите сначала связать ThingsDataContext с самим собой в контексте синглтона.Затем вы можете связать IThingsDataContext с копией ThingsDataContext, которая находится в ядре.

Bind<ThingsDataContext>().ToSelf().InSingletonScope();
kernel.Bind<IThingsDataContext>.ToMethod( c => c.Kernel.Get<ThingsDataContext>());
...