У меня есть класс с конструктором, имеющим параметр со значением по умолчанию. С Ninject 2.2, он будет выполнять атрибут [Optional]
и работать нормально без обязывающих определяется с конструктором объявлен следующим образом:Использование значений параметров по умолчанию с помощью Ninject 3.0
public EmployeeValidator([Optional] IValidator<PersonName> personNameValidator = null)
С обновлением до Ninject 3.0, строительство этого объекта не удается с сообщением о том, что поставщик возвращается нуль:
метод испытания ValidatorIsolated.Tests.EmployeeValidatorTest.CreateEmployeeValidatorTest выбросил исключение:
Ninject.ActivationException: Ошибка activatin g IValidator {PersonName} с использованием условной неявной самообвязки IValidator {PersonName}
Провайдер возвращается null.
активации путь:
2) Инъекция зависимости IValidator {PERSONNAME} в параметре personNameValidator конструктора типа EmployeeValidator
1) Запрос IValidator {Сотрудник}
Предложения:
1) Убедитесь, что поставщик правильно обрабатывает запросы на создание.
Атрибут [Optional]
по-прежнему соблюдается при наличии значения по умолчанию для параметра и что является лучшим способом обработки инъекций с такими необязательными параметрами?
Это имеет смысл. Спасибо Remo! –
@ The Daveter: пахнет как запрос на растяжение для улучшения сообщения об ошибке: P –
«NinjectSettings.AllowNullInjection» обычно является свойством «kernel.Settings» для тех, кто полагает, что это статическое свойство. – nicodemus13