使用ninject在提供程序中注入参数

时间:2015-12-17 12:21:23

标签: c# dependency-injection parameter-passing ninject

我正在使用提供程序来实例化支持我的界面时使用的类:

        Bind<IFoo>()
            .ToProvider<FooProvider>()
            .InSingletonScope();

如何将参数传递给providers构造函数/ CreateInstance-method?

我的方法有问题吗?对于一般的DI框架来说,这是一个相当新的东西。

1 个答案:

答案 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}}(这两个问题都在其他问题/答案中讨论过)。