50

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

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

4

1 回答 1

78

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

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

如果你想要更复杂的东西ToMethod,你可以使用(你可以使用 Func 来获取你的实例)与InSingletonScope

var kernel = new StandardKernel();
kernel.Bind<MyClass>().ToMethod(context => myClassInstance).InSingletonScope();
于 2013-06-04T12:14:58.987 回答