如何使用Ninject注入基本类型的属性?

时间:2016-02-10 09:50:39

标签: ninject

在实例化/激活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; }
    }

2 个答案:

答案 0 :(得分:1)

kernel.Bind<Bar>().ToSelf().WithPropertyValue("Name", "Tommy");

答案 1 :(得分:1)

或者,这更具有重构安全性:

kernel.Bind<Bar>().ToSelf().OnActivation(bar => bar.Name = "Tommy");

但要注意,如果没有其他选择,你应该只使用属性注入。对象应该由构造函数构建 - i.E.在构造函数运行之后,它们应该具备运行所需的全部功能。所以也许你应该将值注入构造函数中。