如何使用Ninject的IsSingletonScope方法?

时间:2011-05-14 17:32:33

标签: c# dependency-injection ioc-container ninject

我的项目中有Ninject个绑定。

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

我需要通过构造函数将IThingsDataContext注入ThingViewModelThingsListViewModel,并且它与IThingsDataContext具有相同的实例。

但是当我做的时候

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

我看到注入视图模型的两个不同的IThingsDataContext实例! 我是否对绑定做错了或使用IsSingletonScope错误?

1 个答案:

答案 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>());
相关问题