私は、デフォルト値を持つパラメータを持つコンストラクタを持つクラスを持っています。 Ninject 2.2で、それは[Optional]
属性を称えるでしょうし、無結合で細かい仕事コンストラクタに対するがそうのように宣言定義さ:Ninject 3.0にアップグレードしているのでデフォルトのパラメータ値をNinject 3.0で使用
public EmployeeValidator([Optional] IValidator<PersonName> personNameValidator = null)
、このオブジェクトの構築があることを示すメッセージで失敗activatinエラー:
Ninject.ActivationException:ValidatorIsolated.Tests.EmployeeValidatorTest.CreateEmployeeValidatorTestが例外をスローした
試験方法:プロバイダがnullを返しましたg IValidator {PersonName} IValidator {PersonName}の条件付き暗黙的自己バインディングを使用するIValidator {PersonName}
プロバイダがnullを返しました。
活性化経路:
2)型EmployeeValidatorのコンストラクタのパラメータpersonNameValidatorに依存IValidator {PersonNameの}の注射
1)IValidatorの要求{従業員}
提案:
1)プロバイダーが作成要求を適切に処理することを確認します。
パラメータのデフォルト値が存在する場合でも[Optional]
属性は引き続き適用されますが、このようなオプションのパラメータを使用して注入を処理する最良の方法は何ですか?
これは意味があります。おかげさまでレモ! –
@Davester:エラーメッセージの改善のためのプルリクエストのような臭い:P –
'NinjectSettings.AllowNullInjection'は一般に静的なプロパティであると仮定した場合の' kernel.Settings 'プロパティです。 – nicodemus13