Ho una classe con un costruttore che ha un parametro con un valore predefinito. Con Ninject 2.2, sarebbe onorare l'attributo [Optional]
e lavorare bene senza legame definito contro un costruttore dichiarato in questo modo:Utilizzo dei valori di parametro predefiniti con Ninject 3.0
public EmployeeValidator([Optional] IValidator<PersonName> personNameValidator = null)
Dal momento che l'aggiornamento a Ninject 3.0, costruzione di questo oggetto non riesce con un messaggio che indica che il fornitore restituito null:
metodo ValidatorIsolated.Tests.EmployeeValidatorTest.CreateEmployeeValidatorTest ha gettato un'eccezione:
Ninject.ActivationException: Errore activatin g IValidator {PersonName} utilizzando l'auto-associazione implicita condizionale di IValidator {PersonName}
Provider restituito null.
percorsoAttivazione:
2) Iniezione di dipendenza IValidator {PersonName} nel parametro personNameValidator di costruttore di tipo EmployeeValidator
1) Richiesta di IValidator {Employee}
Suggerimenti:
1) Assicurarsi che il provider gestisca correttamente le richieste di creazione.
è l'attributo [Optional]
ancora onorato quando è presente un valore predefinito per un parametro e qual è il modo migliore per gestire l'iniezione con i parametri opzionali come questo?
Questo ha senso. Grazie Remo! –
@The Davester: odora come una richiesta di pull per un miglioramento di un messaggio di errore: P –
Il 'NinjectSettings.AllowNullInjection' è generalmente la proprietà' kernel.Settings 'per quelli che assumono che sia una proprietà statica. – nicodemus13