2017-02-17 24 views
3

私は組み込みのコンテナを使用してASP.NET Coreを使用しています。FluentValidationバリデータをASP.NET Coreに手動で登録するにはどうすればよいですか?

登録はlike soを行うことになっている。

services 
    .AddMvc() 
    .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>()) 

この自動的1)FluentValidationを構成し、および2)アセンブリで見つかったすべてのバリデータを登録します。

しかし、私はバリデータを手動で登録したいと思います。それ、どうやったら出来るの?

答えて

0
// must first setup FV 
services 
    .AddMvc() 
    .AddFluentValidation(fv => {}); 

// can then manually register validators 
services.AddTransient<IValidator<Foo>, FooValidator>(); 
services.AddTransient<IValidator<Bar>, BarValidator>(); 
2

ValidatorFactoryの使用を検討したいと思うでしょう。あなたのIOCコンテナにあなたのバリデータを登録する必要があります

.AddFluentValidation(fv => fv.ValidatorFactory = new MyValidatorFactory())

:だからではなく、FluentValidationを追加するにはお電話で、あなたの呼び出しは次のようになります。カスタムValidatorFactory実装では、CreateInstanceをオーバーライドし、IOCコンテナを使用してバリデータを解決する必要があります。

https://github.com/JeremySkinner/FluentValidation/wiki/i.-IoC

+0

実際に私が働くはるかに簡単な何か試してみました: 'services.AddTransientを、FooValidator>();'それが動作する理由私は好奇心旺盛だし、なぜあなたの方法は正しいですか? – grokky

+0

そのようなバリデータを追加すると、 '.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining ())' – Stout01

+0

いいえ、私はその自動登録を削除します。次に、それぞれを手動で登録します。それだけでうまくいく。しかし、私は 'RegisterValidatorsFromAssemblyContaining'が私が行方不明になっていることをもっと恐れることを恐れ、実行時に爆発するでしょう。 – grokky

関連する問題