Подтвердить что ты не робот

Ninject: Регистрация уже созданного экземпляра с помощью Ninject?

Может ли кто-нибудь сказать мне, могу ли я зарегистрировать уже созданный экземпляр класса с Ninject, чтобы он использовал этот экземпляр каждый раз, когда ему нужно впрыскивать?

Я предполагаю, что вы можете назвать его одиночным, но у меня уже создан экземпляр. Вся документация указывает на создание новых экземпляров класса.

4b9b3361

Ответ 1

Вы можете использовать метод ToConstant, который принимает уже существующий экземпляр и регистрирует его как singleton.

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

Если вы хотите что-то более сложное, вы можете использовать ToMethod (где вы можете использовать Func для получения вашего экземпляра) в сочетании с InSingletonScope

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