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

时间:2016-09-01 00:34:45

标签: c# ninject

目标是避免在以下列方式配置内核时多次声明相同的构造函数参数:

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");

希望将“绑定链”考虑在内,但不要考虑。

1 个答案:

答案 0 :(得分:1)

您可以将参数打包在一个类型中,例如:

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类型。