[英]Use async method in custom validation attribute in c#
我有一個評估字段的異步方法。
Task<bool> MyMethod(object obj);
我想創建一個使用上述方法的自定義驗證屬性。 我的問題是ValidationAttribute
類不支持異步方法。
我通常會覆蓋以下方法:
ValidationResult IsValid (object? obj, ValidationContext validationContext);
但是我的異步方法的輸出是Task<ValidationResult>
並且我不想使用同步方法。
您有解決方案或建議嗎?
提示:由於I/O阻塞,我想使用 async 方法。 (沒有 CPU 限制或繁重的操作。)
您將不得不選擇,如果 ValidationAttribute 不支持 async/await 調用,那么您可能必須同步,否則您可以在 IsValid 中調用一個異步方法,但它不會阻止並且您可能會得到錯誤的結果。
我看不出有什么辦法可以解決這個問題,因為您幾乎需要立即知道某些內容是有效還是無效。 這可能是 ValidationAttribute 無法識別它們的原因。
你可以修改你的模型而不是擴展,並有一個 isValidChecked 事件或 isInvalid 事件,這些事件從異步細節的更改中觸發,然后在這些事件觸發時做一些事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.