Tengo una clase con un constructor que tiene un parámetro con un valor predeterminado. Con Ninject 2.2, se cumpliría el atributo [Optional]
y funcionar bien sin unión definido contra un constructor declarado así:Usar valores de parámetros predeterminados con Ninject 3.0
public EmployeeValidator([Optional] IValidator<PersonName> personNameValidator = null)
Desde la actualización a Ninject 3.0, la construcción de este objeto falla con un mensaje que indica que la proveedor devuelve nulo:
método de ensayo ValidatorIsolated.Tests.EmployeeValidatorTest.CreateEmployeeValidatorTest lanzó excepción:
Ninject.ActivationException: Error activatin g IValidator {PersonName} con el autoenlace implícito condicional de IValidator {PersonName}
El proveedor devolvió nulo.
caminoActivación:
2) Inyección de dependencia IValidator {PersonName} en el parámetro personNameValidator de constructor de tipo EmployeeValidator
1) Solicitud de IValidator {Empleado}
Sugerencias:
1) Asegúrese de que el proveedor maneje las solicitudes de creación correctamente.
¿El atributo [Optional]
aún se cumple cuando hay un valor predeterminado para un parámetro y cuál es la mejor forma de manejar la inyección con parámetros opcionales como este?
Eso tiene sentido. Gracias Remo! –
@ The Davester: huele como una solicitud de extracción para una mejora de un mensaje de error: P –
La 'NinjectSettings.AllowNullInjection' es generalmente la propiedad' kernel.Settings 'para aquellos que asumen que es una propiedad estática. – nicodemus13