Dependency injection Ninject可以创建独立对象吗?

Dependency injection Ninject可以创建独立对象吗?,dependency-injection,singleton,ninject,Dependency Injection,Singleton,Ninject,我需要实例化一个没有其他对象需要引用的对象,并且我希望它在应用程序运行时一直有效。 它将使用其他服务,但没有其他人需要它的服务 是否可以让ninject在开始时创建一个这样的对象,并将其保存在内存中,或者我需要将其存储在某个地方?如何将ninject设置为它将创建我的实例并将其保留到退出 如果是这样的话,您对此做法有何看法?据我所知,ninject不提供现成的功能。 然而,当你 IBindingRoot.Bind<FooService>().ToSelf().InSingletonS

我需要实例化一个没有其他对象需要引用的对象,并且我希望它在应用程序运行时一直有效。 它将使用其他服务,但没有其他人需要它的服务

是否可以让ninject在开始时创建一个这样的对象,并将其保存在内存中,或者我需要将其存储在某个地方?如何将ninject设置为它将创建我的实例并将其保留到退出


如果是这样的话,您对此做法有何看法?

据我所知,ninject不提供现成的功能。 然而,当你

IBindingRoot.Bind<FooService>().ToSelf().InSingletonScope();
这会导致当
somesingletons在开始时被实例化时,
FooService
被建立,并且当
somesingletons在开始时被释放/未被引用时,
somesingletons被“释放”

但是,要注意循环依赖关系


另一种方法是使用
OnActivation
功能来实现与以前相同的功能:

IBindingRoot.Bind<FooService>().ToSelf().InSingletonScope();

IBindingRoot
     .Bind<SomeSingletonWhichIsInstantiatedAtTheBeginning>()
     .To<...>()
     .OnActivation((context, service) => ctx.Kernel.Get<FooService>());
IBindingRoot.Bind().ToSelf().InSingletonScope();
伊宾丁根
.Bind()
.至()
.OnActivation((上下文,服务)=>ctx.Kernel.Get());
这将
FooService
的实例化与
somesingleton的实例化联系起来,后者在内核被释放时在一开始就被初始化了
,并且摆脱了
FooService

IBindingRoot.Bind<SomeSingletonWhichIsInstantiatedAtTheBeginning>().To<...>();
IBindingRoot.DefineDependency<SomeSingletonWhichIsInstantiatedAtTheBeginning, FooService>();
IBindingRoot.Bind<FooService>().ToSelf().InDependencyCreatorScope();
IBindingRoot.Bind<FooService>().ToSelf().InSingletonScope();

IBindingRoot
     .Bind<SomeSingletonWhichIsInstantiatedAtTheBeginning>()
     .To<...>()
     .OnActivation((context, service) => ctx.Kernel.Get<FooService>());