У меня есть класс с конструктором, имеющим параметр со значением по умолчанию. С Ninject 2.2 он будет соблюдать атрибут [Optional]
и отлично работать, не привязывая его к объявленному конструктору:
public EmployeeValidator([Optional] IValidator<PersonName> personNameValidator = null)
Начиная с обновления до Ninject 3.0, построение этого объекта завершается с сообщением о том, что поставщик вернул null:
Метод проверки ValidatorIsolated.Tests.EmployeeValidatorTest.CreateEmployeeValidatorTest выбрал исключение:
Ninject.ActivationException: ошибка активации IValidator {PersonName} с использованием условной неявной самообвязки IValidator {PersonName}
Поставщик возвращает null.
Путь активации:
2) Инъекция зависимости IValidator {PersonName} в параметр personNameValidator конструктора типа EmployeeValidator
1) Запрос для IValidator {Employee}
Предложения:
1) Убедитесь, что поставщик правильно обрабатывает запросы на создание.
Атрибут [Optional]
по-прежнему соблюдается, когда присутствует значение по умолчанию для параметра, и каков наилучший способ обработки инъекции с такими необязательными параметрами, как этот?