正在使用ninject在提供程序中注入参数
本文关键字:程序 参数 注入 ninject | 更新日期: 2023-09-27 18:27:06
我正在使用一个提供程序来实例化在支持我的接口时使用的类,如下所示:
Bind<IFoo>()
.ToProvider<FooProvider>()
.InSingletonScope();
如何将参数传递到提供者构造函数/CreateInstance方法?
我的做法有什么问题吗?一般来说,对DI框架来说相当陌生。
绑定通常是可以的,FooProvider
将由ninject实例化,因此您可以传入任何您想要的内容。如果需要将值传递给FooProvider
的ctor,则可以绑定依赖项或自定义FooProvider
的绑定以传递参数:
kernel.Bind<FooProvider>().ToSelf()
// will match a parameter of type `int`
.WithConstructorArgument<int>(15)
// will match a parameter with name `parameterName`
.WithConstructorArgument("parameterName", "parameterValue");
如果你想把一个参数传递给Provider
的Create(IContext context)
方法,那么提供者很可能不是合适的选择,相反,看看抽象的工厂模式和Ninject.Extensions.factory(SO上的其他问题/答案都涵盖了这两个)。