Как добавить свойство примитивного типа с помощью Ninject?

67
5

Как мне ввести имя "Tommy" в свойство Name Bar при создании/активации объекта Foo?

class Foo
{
public Bar Bar { get; set; }

public Foo(Bar b) { Bar = b; }
}

class Bar
{
[Inject]
public string Name { get; set; }
}

спросил(а) 2016-02-10T12:50:00+03:00 4 года, 6 месяцев назад
1
Решение
56

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

ответил(а) 2016-02-10T13:04:00+03:00 4 года, 6 месяцев назад
56

В качестве альтернативы, это более безопасно:

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

но будьте осторожны, вы должны использовать только инъекцию свойств, когда нет альтернатив. Объекты должны быть созданы конструктором - iE после запуска конструктора, они должны иметь все, что им нужно для работы. Поэтому, возможно, вы должны ввести значение в конструктор вместо этого.

ответил(а) 2016-02-10T18:15:00+03:00 4 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема