私はAsp.Net Core Web APIでカスタム検証属性を作成しています。バリデーターのIDataProtectorとデータベースにアクセスするために使用している別のサービスにアクセスする必要があります。私は検索しましたが、abはありませんでした。 ActionFiltersにはServiceFilterを使用するオプションがありますが、Validation Attributeにはオプションがないようです。何か案は?検証属性への依存関係の挿入Web Api Asp.Netコア
1
A
答えて
1
一般に、検証属性はプロパティで定義されるため、コンストラクタを介して参照を受け取ることはできません。あなたがモデルバインディングを深く知っていれば、プロパティの注入を可能にするためにカスタマイズするものがあるかもしれませんが、実際にはValidateメソッドの依存関係リゾルバへの参照を取得し、適切なメソッドを呼び出します。
0
ValidationContextのGetService()メソッドを使用してデータベースを取得します。あなたはisValidメソッドをオーバーライドして、依存関係を解決するためにvalidationContextを使用することができます
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
MyDbContext db = (MyDbContext) validationContext.GetService(typeof(MyDbContext));
//...
}
0
すなわち :
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var service = (IExternalService) validationContext.GetService(typeof(IExternalService));
// use service
}
関連する問題
- 1. ASP.netコアでの依存関係注入
- 2. ASP.NETコアのAutomapper TypeConverterへの依存関係の注入
- 3. ASP.NETコア依存性注入
- 4. ASP.NET Core 2 WEB API - 依存性注入
- 5. ASP.NET Web API依存性注入
- 6. モデルの検証:RequireIfNull属性(ASP.NETコア)
- 7. 依存関係注入とASP.net MVC 5/Web API 2
- 8. ASP.NETコア依存性注入、パラメータを挿入
- 9. asp.netコアのモデルに依存関係を挿入する方法は?
- 10. asp.netコアのキャッシュ依存性
- 11. Asp.netの依存関係注入場所
- 12. Apache ShiroとGoogle Guice:レルムへの依存関係の挿入
- 13. ASP.NETコアと依存性注入
- 14. asp.netコア依存性注入設定
- 15. プロパティの依存関係を.net属性に挿入する方法は?
- 16. ASP.NET MVC Webロケータに依存関係を挿入するためのサービスロケータ
- 17. yumリポジトリの依存関係の検証
- 18. Laravel構造 - コントローラへの依存関係の挿入
- 19. データベースへの依存関係の挿入scalaオブジェクト
- 20. jquery依存関係の検証
- 21. Silverlight検証依存関係のプロパティ
- 22. カスタム認証asp.netコアweb api
- 23. JQuery検証:必須(依存関係式)
- 24. macのasp.netコアでの依存関係の競合
- 25. .netコアのWeb APIコンストラクタの依存関係を解決するには
- 26. 他のプロジェクトにクラスを挿入するためにAsp.Netコア依存関係注入を使用する
- 27. 依存関係注入とASP.Netメンバーシッププロバイダ
- 28. ASP.NETコア依存性注入:工場とインスタンスの違い?
- 29. 動的依存性注入Web Api
- 30. Asp.Netコアの依存関係を解決する
表現としてあなたは、属性に依存関係を注入してはならない[ここ](https://stackoverflow.com/a/ 29916075/264697)、[ここ](http://blog.ploeh.dk/2014/06/13/passive-attributes/)、[ここ](https://www.cuttingedge.it/blogs/steven/pivot) /entry.php?id=97)。 – Steven