我的项目中有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
错误?
答案 0 :(得分:0)
我刚刚回到使用Ninject,所以我有点生疏,但这听起来像我从Ninject 1.0迁移到2.0时遇到的单身问题。您可以read more details on my blog,但我认为您希望首先在单例上下文中将ThingsDataContext绑定到自身。然后,您可以将IThingsDataContext绑定到内核中的ThingsDataContext副本。
Bind<ThingsDataContext>().ToSelf().InSingletonScope();
kernel.Bind<IThingsDataContext>.ToMethod( c => c.Kernel.Get<ThingsDataContext>());