デフォルト値を持つパラメーターを持つコンストラクターを持つクラスがあります。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) EmployeeValidator 型のコンストラクターのパラメーター personNameValidator への依存関係 IValidator{PersonName} の注入
1) IValidator{Employee} のリクエスト
提案:
1) プロバイダーが作成要求を適切に処理することを確認します。
パラメータのデフォルト値が存在する場合、[Optional]
属性は引き続き尊重されますか?このようなオプションのパラメータで注入を処理する最良の方法は何ですか?