検証を実行するためにデータベースにアクセスする必要がある場所に検証属性を設定しています。プロジェクトの他の場所と同じ方法でプロパティインジェクションを設定しようとしましたが、機能しません。どのステップが欠けていますか?
public class ApplicationIDValidAttribute : ValidationAttribute
{
[Inject]
protected IRepository<MyType> MyRepo;
public override bool IsValid(object value)
{
if (value == null)
return true;
int id;
if (!Int32.TryParse(value.ToString(), out id))
return false;
// MyRepo is null here and is never injected
var obj= MyRepo.LoadById(id);
return (obj!= null);
}
もう1つ指摘しておきたいのは、非公開プロパティを注入するようにNinjectカーネルを設定しているので、それが問題だとは思わないということです。Ninject 2、MVC 2、およびMVC2バージョンのNinject.Web.MVCを使用しています。
ありがとう!