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

本文关键字:程序 参数 注入 ninject | 更新日期: 2023-09-27 18:27:06

我正在使用一个提供程序来实例化在支持我的接口时使用的类,如下所示:

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

如何将参数传递到提供者构造函数/CreateInstance方法?

我的做法有什么问题吗?一般来说,对DI框架来说相当陌生。

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

绑定通常是可以的,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");

如果你想把一个参数传递给ProviderCreate(IContext context)方法,那么提供者很可能不是合适的选择,相反,看看抽象的工厂模式和Ninject.Extensions.factory(SO上的其他问题/答案都涵盖了这两个)。