Привязка интерфейса через ToMethod к методу с параметром - PullRequest
7 голосов
/ 29 сентября 2011

Я думаю, что я ищу что-то очень простое, но я не могу найти никаких примеров.Я хотел бы использовать Ninject для создания объекта, если бы Ninject вызывал метод фабрики с указанным параметром, а не вводил его во время фактического запроса на создание объекта:

Запрос объекта здесь:

StandardKernel.Get<ISomeInteface>(new Ninject.Parameters.Parameter("dataContext", dataContext, true));

И я хотел бы сопоставить ISomeInterface с методом, который ожидает, что значение будет передано ему во время выполнения.

Отображение интерфейса здесь:

Kernel.Bind<ISomeInterface>().ToMethod(SomeObject.Create(--> `what do I put here?`));

Это возможно?Если да, то как мне правильно сопоставить мой интерфейс?Спасибо!

1 Ответ

6 голосов
/ 29 сентября 2011
ToMethod(ctx => 
    SomeObject.Create(
        (IDataContext)ctx.Parameters.Single(p =>p.Name == "dataContext")
        .GetValue(ctx, null))

Но вы должны переосмыслить свой дизайн, чтобы не вызывать Get из любого места, кроме вашего составного корня.

...