語言

Validator.TryValidateObjectAsync 方法

定義

多載

TryValidateObjectAsync(Object, ValidationContext, ICollection<ValidationResult>, CancellationToken)

來源:
Validator.cs

非同步測試給定物件實例是否有效。

[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Constructing a ValidationContext without a display name is not trim-safe because it uses reflection to discover the type of the instance being validated in order to resolve the DisplayNameAttribute when a display name is not provided.")]
public static System.Threading.Tasks.Task<bool> TryValidateObjectAsync(object instance, System.ComponentModel.DataAnnotations.ValidationContext validationContext, System.Collections.Generic.ICollection<System.ComponentModel.DataAnnotations.ValidationResult>? validationResults, System.Threading.CancellationToken cancellationToken = default);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Constructing a ValidationContext without a display name is not trim-safe because it uses reflection to discover the type of the instance being validated in order to resolve the DisplayNameAttribute when a display name is not provided.")>]
static member TryValidateObjectAsync : obj * System.ComponentModel.DataAnnotations.ValidationContext * System.Collections.Generic.ICollection<System.ComponentModel.DataAnnotations.ValidationResult> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<bool>
Public Shared Function TryValidateObjectAsync (instance As Object, validationContext As ValidationContext, validationResults As ICollection(Of ValidationResult), Optional cancellationToken As CancellationToken = Nothing) As Task(Of Boolean)

參數

instance
Object

要測試的物件實例。 它不能 null。

validationContext
ValidationContext

描述驗證對象,並提供驗證者所需的服務與上下文。

validationResults
ICollection<ValidationResult>

一個可選的集合,將驗證失敗作為 ValidationResult 實例接收。

cancellationToken
CancellationToken

A CancellationToken 在等待任務完成時觀察。

傳回

Task<TResult> A,即true當物件有效時false,若遇到任何驗證錯誤。

屬性

例外狀況

當 instance 是 null。

當 validationContext 是 null。

何時instance不符合ObjectInstance。validationContext

驗證作業被取消。

備註

此方法會評估所有 ValidationAttribute附加於物件實例型別的 s。 它也會檢查所有標記為 的 RequiredAttribute 屬性是否都已設定。 除非TryValidateObjectAsync(Object, ValidationContext, ICollection<ValidationResult>, Boolean, CancellationToken)被調用,validateAllPropertiestrue否則它不會驗證物件個別屬性上的 s。ValidationAttribute

驗證分為三個階段:屬性驗證、型別層級屬性驗證,以及物件層級驗證。 每個階段只有在前一階段成功時才會進行。 物件層驗證在實作時偏好調 ValidateAsync(ValidationContext, CancellationToken) 用,作為 Validate(ValidationContext) 僅實作同步介面物件的備援。 它並未同時提及兩者。

適用於

TryValidateObjectAsync(Object, ValidationContext, ICollection<ValidationResult>, Boolean, CancellationToken)

來源:
Validator.cs

非同步測試給定物件實例是否有效。

[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Constructing a ValidationContext without a display name is not trim-safe because it uses reflection to discover the type of the instance being validated in order to resolve the DisplayNameAttribute when a display name is not provided.")]
public static System.Threading.Tasks.Task<bool> TryValidateObjectAsync(object instance, System.ComponentModel.DataAnnotations.ValidationContext validationContext, System.Collections.Generic.ICollection<System.ComponentModel.DataAnnotations.ValidationResult>? validationResults, bool validateAllProperties, System.Threading.CancellationToken cancellationToken = default);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Constructing a ValidationContext without a display name is not trim-safe because it uses reflection to discover the type of the instance being validated in order to resolve the DisplayNameAttribute when a display name is not provided.")>]
static member TryValidateObjectAsync : obj * System.ComponentModel.DataAnnotations.ValidationContext * System.Collections.Generic.ICollection<System.ComponentModel.DataAnnotations.ValidationResult> * bool * System.Threading.CancellationToken -> System.Threading.Tasks.Task<bool>
Public Shared Function TryValidateObjectAsync (instance As Object, validationContext As ValidationContext, validationResults As ICollection(Of ValidationResult), validateAllProperties As Boolean, Optional cancellationToken As CancellationToken = Nothing) As Task(Of Boolean)

參數

instance
Object

要測試的物件實例。 它不能 null。

validationContext
ValidationContext

描述驗證對象,並提供驗證者所需的服務與上下文。

validationResults
ICollection<ValidationResult>

一個可選的集合,將驗證失敗作為 ValidationResult 實例接收。

validateAllProperties
Boolean

若 true,則 也評估物件的所有性質(此過程對屬性的性質不遞迴)。

cancellationToken
CancellationToken

A CancellationToken 在等待任務完成時觀察。

傳回

Task<TResult> A,即true當物件有效時false,若遇到任何驗證錯誤。

屬性

例外狀況

當 instance 是 null。

當 validationContext 是 null。

何時instance不符合ObjectInstance。validationContext

驗證作業被取消。

備註

此方法會評估所有 ValidationAttribute附加於物件實例型別的 s。 它也會檢查所有標記為 的 RequiredAttribute 屬性是否都已設定。 若 validateAllProperties 為 true,此方法同時評估 ValidationAttribute該物件所有直接性質的 s。 這個過程不是遞迴的。

當 validateAllProperties 時 true,開始對序列中的每個屬性進行驗證。 屬性的同步屬性會在等待該屬性的非同步屬性之前執行。 持續進行中的非同步驗證可能與其他屬性的非同步驗證重疊。

當 validationResults 為 null時,驗證在發生第一個性質錯誤(交叉性質短路)後停止。 其他屬性的飛行中非同步驗證器會被合作取消。 當 validationResults 非零時,所有性質皆完備,所有錯誤皆被收集。

與標準非同步組合模式(如 Task.WhenAll 和Task.WhenAny)互通性的回報Task<TResult>。

驗證分為三個階段:屬性驗證、型別層級屬性驗證,以及物件層級驗證。 每個階段只有在前一階段成功時才會進行。 物件層驗證在實作時偏好調 ValidateAsync(ValidationContext, CancellationToken) 用,作為 Validate(ValidationContext) 僅實作同步介面物件的備援。 它並未同時提及兩者。

適用於