在实例化/激活Name
对象时,如何将名称“Tommy”注入Bar的Foo
属性?
class Foo
{
public Bar Bar { get; set; }
public Foo(Bar b) { Bar = b; }
}
class Bar
{
[Inject]
public string Name { get; set; }
}
答案 0 :(得分:1)
kernel.Bind<Bar>().ToSelf().WithPropertyValue("Name", "Tommy");
答案 1 :(得分:1)
或者,这更具有重构安全性:
kernel.Bind<Bar>().ToSelf().OnActivation(bar => bar.Name = "Tommy");
但要注意,如果没有其他选择,你应该只使用属性注入。对象应该由构造函数构建 - i.E.在构造函数运行之后,它们应该具备运行所需的全部功能。所以也许你应该将值注入构造函数中。