如何使用 Ninject 注入原始类型的 属性?
How do I inject a property of a primitive type using Ninject?
如何在实例化/激活Foo
对象时将名称"Tommy"注入Bar的Name
属性?
class Foo
{
public Bar Bar { get; set; }
public Foo(Bar b) { Bar = b; }
}
class Bar
{
[Inject]
public string Name { get; set; }
}
kernel.Bind<Bar>().ToSelf().WithPropertyValue("Name", "Tommy");
或者,重构更安全:
kernel.Bind<Bar>().ToSelf().OnActivation(bar => bar.Name = "Tommy");
但请注意,只有在别无选择时才应使用 属性 注入。对象应该由构造函数构建 - 即在构造函数 运行 之后,他们应该拥有操作所需的一切。因此,也许您应该改为将值注入构造函数。
如何在实例化/激活Foo
对象时将名称"Tommy"注入Bar的Name
属性?
class Foo
{
public Bar Bar { get; set; }
public Foo(Bar b) { Bar = b; }
}
class Bar
{
[Inject]
public string Name { get; set; }
}
kernel.Bind<Bar>().ToSelf().WithPropertyValue("Name", "Tommy");
或者,重构更安全:
kernel.Bind<Bar>().ToSelf().OnActivation(bar => bar.Name = "Tommy");
但请注意,只有在别无选择时才应使用 属性 注入。对象应该由构造函数构建 - 即在构造函数 运行 之后,他们应该拥有操作所需的一切。因此,也许您应该改为将值注入构造函数。