如何使用 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");

但请注意,只有在别无选择时才应使用 属性 注入。对象应该由构造函数构建 - 即在构造函数 运行 之后,他们应该拥有操作所需的一切。因此,也许您应该改为将值注入构造函数。