Ninject:使用Ninject注册已创建的实例?

时间:2013-06-04 11:02:34

标签: dependency-injection ninject ninject-2

任何人都可以告诉我是否可以使用Ninject注册已创建的类实例,以便每次需要注入时它都会使用此实例?

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

1 个答案:

答案 0 :(得分:66)

您可以使用ToConstant方法获取已存在的实例并将其注册为单例。

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

如果您想要更复杂的内容,可以使用ToMethod(您可以使用Func获取实例)与InSingletonScope

结合使用
var kernel = new StandardKernel();
kernel.Bind<MyClass>().ToMethod(context => myClassInstance).InSingletonScope();