C# 如何使用Ninject的IsSingletonScope方法?

C# 如何使用Ninject的IsSingletonScope方法?,c#,dependency-injection,ioc-container,ninject,C#,Dependency Injection,Ioc Container,Ninject,我的项目中有以下九个对象绑定 Bind<IThingsDataContext>().To<ThingsDataContext>().InSingletonScope(); Bind<IThingViewModel>().To<ThingViewModel>(); Bind<IThingsListViewModel>().To<ThingsListViewModel>(); 我看到两个不同的IThin

我的项目中有以下九个对象绑定

    Bind<IThingsDataContext>().To<ThingsDataContext>().InSingletonScope();
    Bind<IThingViewModel>().To<ThingViewModel>();
    Bind<IThingsListViewModel>().To<ThingsListViewModel>();
我看到两个不同的IThingsDataContext实例被注入到viewmodels中!
我是否在绑定方面做了一些错误的事情,或者不正确地使用了IsSingletonScope?

我刚刚开始使用Ninject,所以我有点生疏,但这听起来像是我从Ninject 1.0迁移到2.0时遇到的单例问题。可以,但我认为您需要首先在单例上下文中将ThingsDataContext绑定到自身。然后可以将ThingsDataContext绑定到内核中ThingsDataContext的副本

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

就我所知,这应该行得通。你能提供一个复制单元测试吗?
Bind<ThingsDataContext>().ToSelf().InSingletonScope();
kernel.Bind<IThingsDataContext>.ToMethod( c => c.Kernel.Get<ThingsDataContext>());