NInject:跨多个绑定共享构造函数声明

本文关键字:共享 构造函数 声明 绑定 NInject | 更新日期: 2023-09-27 18:05:07

这样做的目的是为了避免在以以下方式配置内核时多次声明相同的构造函数参数:

Kernel.Bind<ISomeService>().To<SomeService>()
  .WithConstructorArgument("arg", "value");
Kernel.Bind<SomeService>.ToSelf()
  .WithConstructorArgument("arg", "value");

尝试:

Kernel.Bind<ISomeService>().To<SomeService>();
Kernel.Bind<SomeService>().ToSelf().WithConstructorArgument("arg", "value");

希望考虑到"绑定链",但是没有

NInject:跨多个绑定共享构造函数声明

你可以把你的参数打包成一个类型,例如:

public class FooConfig
{
    private readonly string value;
    public FooConfig(string value)
    {
        this.value = value;
    }
    public Value
    { 
        get { return this.value; }
    }
}

然后像这样绑定:

Bind<FooConfig>().ToConstant(new FooConfig("configValue"));

,然后调整依赖项以注入FooConfig类型。