我正在使用提供程序来实例化支持我的界面时使用的类:
Bind<IFoo>()
.ToProvider<FooProvider>()
.InSingletonScope();
如何将参数传递给providers构造函数/ CreateInstance-method?
我的方法有问题吗?对于一般的DI框架来说,这是一个相当新的东西。
答案 0 :(得分:0)
绑定通常没问题,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");
如果要将参数传递给Create(IContext context)
的{{1}}方法,那么提供者很可能不是正确的选择,而是查看抽象工厂模式和{ {3}}(这两个问题都在其他问题/答案中讨论过)。