2013-06-17 10 views
2

Вероятно, простой вопрос, но я ничего не нашел в документации или на SO, который непосредственно отвечает на него.Что приводит к тому, что свойство Ninject.Activation.IRequest Target имеет значение null

Мне приходилось работать с методом расширения Ninject When(Func<IRequest, bool> condition) в первый раз и зависеть от бит с исключениями из нулевого объекта. Я понял, что свойство IRequest.Target иногда является нулевым, и я видел некоторые otherexamples с использованием When, которые также проверяют нуль Target.

Мне интересны условия, при которых Ninject выполняет обратный вызов без значения для Target. При создании привязки формы

Bind<T1>() 
    .To<T2> 
    .When(r => SomeTest(r.Target)); 

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

ответ

2

Это нуль для объекта root, потому что в этом случае нет цели. (kernel.Get<MyCompositionRoot>())

+1

Значит ли это, что если тип 'T1' is * only * присутствует как аргумент конструктора, то' Target' не будет null? Иначе говоря, если я столкнулся с нулевой мишенью, это обязательно означает, что есть некоторый бит-код, который запрашивает привязку напрямую, например. 'var x = kernel.Get ()'? – Lucas

 Смежные вопросы

  • Нет связанных вопросов^_^