谁能告诉我是否可以使用 Ninject 注册一个已经创建的类实例,以便它每次需要注入(inject)时都会使用这个实例?

我想你可以称它为单例,但我已经创建了实例。所有文档都指向创建类的新实例。

最佳答案

您可以使用 ToConstant 方法,该方法采用现有实例并将其注册为单例。

var kernel = new StandardKernel();
kernel.Bind<MyClass>().ToConstant(myClassInstance);

如果你想要更复杂的东西,你可以使用 ToMethod(你可以使用 Func 来获取你的实例)结合 InSingletonScope
var kernel = new StandardKernel();
kernel.Bind<MyClass>().ToMethod(context => myClassInstance).InSingletonScope();

关于dependency-injection - Ninject:向 Ninject 注册一个已经创建的实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16916140/

10-16 09:57