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

Mar*_*tin 48 dependency-injection ninject ninject-2

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

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

nem*_*esv 71

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

var kernel = new StandardKernel();
kernel.Bind<MyClass>().ToConstant(myClassInstance);
Run Code Online (Sandbox Code Playgroud)

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

var kernel = new StandardKernel();
kernel.Bind<MyClass>().ToMethod(context => myClassInstance).InSingletonScope();
Run Code Online (Sandbox Code Playgroud)

  • 这应该可以解决您的问题,因为Martin已经为您提供了如何通过实例化对象的良好示例:) (2认同)