MustAsync() 与 WhenAsync() FluentValidation 方法之间的区别
Differences between methods MustAsync() vs WhenAsync() FluentValidation
我使用 .net 5 实现了一个 API 并且我使用了 NuGet FluentValidation。
我试图了解这两种方法有什么区别
MustAsync()
WhenAsync()
我什么时候必须使用它们中的每一个。能举个例子就更好了
WhenAsync()
方法:指定一个异步条件限制验证器应该 运行 的时间。仅当 lambda 的结果 returns 为真时才会执行验证器。
MustAsync()
方法:在当前规则生成器上定义异步谓词验证器,使用 lambda 表达式指定谓词。如果指定的 lambda returns 为假,验证将失败。如果指定的 lambda returns 为真,验证将成功。
你可以去方法定义里查看这些方法的使用情况
以上两种方法都是用来定义异步规则的,例如下面的代码会检查用户ID是否已经存在:
public class CustomerValidator : AbstractValidator<Customer> {
SomeExternalWebApiClient _client;
public CustomerValidator(SomeExternalWebApiClient client) {
_client = client;
RuleFor(x => x.Id).MustAsync(async (id, cancellation) => {
bool exists = await _client.IdExists(id);
return !exists;
}).WithMessage("ID Must be unique");
}
}
然后,通过调用 ValidateAsync
方法来调用验证器。
var validator = new CustomerValidator(new SomeExternalWebApiClient());
var result = await validator.ValidateAsync(customer);
更多详细信息,请参考以下文章:
我使用 .net 5 实现了一个 API 并且我使用了 NuGet FluentValidation。 我试图了解这两种方法有什么区别
MustAsync()
WhenAsync()
我什么时候必须使用它们中的每一个。能举个例子就更好了
WhenAsync()
方法:指定一个异步条件限制验证器应该 运行 的时间。仅当 lambda 的结果 returns 为真时才会执行验证器。
MustAsync()
方法:在当前规则生成器上定义异步谓词验证器,使用 lambda 表达式指定谓词。如果指定的 lambda returns 为假,验证将失败。如果指定的 lambda returns 为真,验证将成功。
你可以去方法定义里查看这些方法的使用情况
以上两种方法都是用来定义异步规则的,例如下面的代码会检查用户ID是否已经存在:
public class CustomerValidator : AbstractValidator<Customer> {
SomeExternalWebApiClient _client;
public CustomerValidator(SomeExternalWebApiClient client) {
_client = client;
RuleFor(x => x.Id).MustAsync(async (id, cancellation) => {
bool exists = await _client.IdExists(id);
return !exists;
}).WithMessage("ID Must be unique");
}
}
然后,通过调用 ValidateAsync
方法来调用验证器。
var validator = new CustomerValidator(new SomeExternalWebApiClient());
var result = await validator.ValidateAsync(customer);
更多详细信息,请参考以下文章: