Ninject - инициализировать объекты - PullRequest
0 голосов
/ 25 марта 2010

Я новичок в ninject, мне интересно, как я могу запускать пользовательский код инициализации при построении внедренных объектов? то есть. У меня есть класс Sword, который реализует IWeapon, но я хочу передать значение точки попадания в конструктор класса Sword, как мне этого добиться? Нужно ли мне писать свой провайдер?

Незначительный вопрос, ядро ​​IKernel = новый StandardKernel (новый Module1 (), новый Module2 (), ...); Какова реальная польза наличия нескольких модулей в ядре? Я понимаю это, но может ли кто-нибудь дать мне официальное объяснение и вариант использования?

Большое спасибо!

Джеймс

1 Ответ

1 голос
/ 25 марта 2010

Если у вас есть класс Sword с этим конструктором:

public Sword(int hitPoints)
    ...

Вместо того, чтобы реализовывать Провайдера, вы можете предпочесть создавать Мечи следующим образом:

IWeapon sword1 = kernel.Get<IWeapon>(With.Parameters.ConstructorArgument("hitPoints", 10));
IWeapon sword2 = kernel.Get<IWeapon>(With.Parameters.ConstructorArgument("hitPoints", 20));
...