Что приводит к тому, что свойство Ninject.Activation.IRequest Target имеет значение null

Вероятно, простой вопрос, но я не нашел ни в документации, ни на SO ничего, что прямо на него отвечало бы.

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

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

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

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


person Lucas    schedule 17.06.2013    source источник


Ответы (1)


Для корневого объекта это null, потому что в этом случае нет цели. (kernel.Get<MyCompositionRoot>())

person Remo Gloor    schedule 18.06.2013
comment
Значит ли это, что если тип T1 присутствует только как аргумент конструктора, то Target не будет нулевым? Другими словами, если я сталкиваюсь с нулевой целью, обязательно ли это означает, что где-то есть какой-то битовый код, запрашивающий привязку напрямую, например. var x = kernel.Get<T1>()? - person Lucas; 19.06.2013