gpt4 book ai didi

c# - 空对象的 FluentValidation 规则

转载 作者:IT王子 更新时间:2023-10-29 04:06:09 27 4
gpt4 key购买 nike

我一直在尝试找出如何创建一个 FluentValidation 规则,该规则在验证它的属性之前检查它正在验证的对象的实例是否不为 null。

我宁愿将此空验证封装在验证器中,而不是在调用代码中进行。

请参阅下面的示例代码,并在需要所需逻辑的地方添加注释:

namespace MyNamespace
{
using FluentValidation;

public class Customer
{
public string Surname { get; set; }
}

public class CustomerValidator: AbstractValidator<Customer>
{
public CustomerValidator()
{
// Rule to check the customer instance is not null.

// Don't continue validating.

RuleFor(c => c.Surname).NotEmpty();
}
}

public class MyClass
{
public void DoCustomerWork(int id)
{
var customer = GetCustomer(id);
var validator = new CustomerValidator();

var results = validator.Validate(customer);

var validationSucceeded = results.IsValid;
}

public Customer GetCustomer(int id)
{
return null;
}
}
}

所以我的问题是如何在 CustomerValidator() 构造函数中检查当前客户实例是否为空,并如果为空则中止进一步的规则处理

提前致谢。

最佳答案

编辑 2022-07-19
正如一些评论者指出的那样,请查看答案 https://stackoverflow.com/a/52784357/1943对于更新的实现。我没有亲自审查过,但值得先尝试一下。

如果您使用的是旧版本,或者您喜欢怀旧,我下面的原始答案来自 2013 年。


您应该能够覆盖 CustomerValidator 类中的 Validate 方法。

public class CustomerValidator: AbstractValidator<Customer> 
{
// constructor...

public override ValidationResult Validate(Customer instance)
{
return instance == null
? new ValidationResult(new [] { new ValidationFailure("Customer", "Customer cannot be null") })
: base.Validate(instance);
}
}

关于c# - 空对象的 FluentValidation 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17095791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com