Ninject Pass Delegate в WithConstructorArgument - PullRequest
5 голосов
/ 01 марта 2012

Мне нужно указать на метод в привязках Ninject как часть аргумента конструктора.Конструктор для класса выглядит следующим образом:

MyObject(Func<Populator> param1, TimeSpan time)

Я искал и не смог найти способ связать делегат для Func.Это вообще возможно?Ninject не позволил бы мне сделать это, потому что он ожидает объект в качестве аргумента, и не будет принимать делегата.

Bind<IInterface>()
      .To<MyObject>()
      .InSingletonScope()
      .WithConstructorArgument
            ("param1", ctx => ctx.Kernel.Get<OtherWiredObject>().PopMethod)
      .WithConstructorArgument
            ("time", new TimeSpan(0,30,0));

Есть ли способ заставить это поведение работать в Ninject?

1 Ответ

3 голосов
/ 01 марта 2012

Вы можете определить привязку следующим образом:

Bind<Func<Populator>>().ToMethod(ctx => ctx.Kernel.Get<OtherWiredObject>().PopMethod);
...