c# - FluentValidation - 验证器包装器
问题描述
我有一个用于基本验证器的文件,例如GuidValidator
, GreaterThanZeroValidator
,LessThanOrEqualToZeroValidator
等。我想创建一个名为的验证器,该验证器NullCheckValidator
将接受另一个验证器作为参数,但在 FluentValidation 中执行特定于类型的空检查.When()
。
为了让 NullCheckValidators 可以将我的任何基本验证器传递给它们,以便在执行基本验证器之前检查它们是否为空,我需要做什么?基本上我想添加一个包装器,它将.When()
验证语句附加到已经存在的基本验证器。
例如:
// Basic Validator
public class GreaterThanZeroValidator : AbstractValidator<int>
{
public GreaterThanZeroValidator()
{
RuleFor(value => value)
.GreaterThan(0)
.WithMessage("Must be greater than 0");
}
}
// Pseudo-code for NullCheckValidator
public class NullCheckValidator : AbstractValidator<int?>
{
public NullCheckValidator(AbstractValidator<int> validator) // validator would be something like GreaterThanZeroValidator
{
RuleFor(value => value)
.When(value => value.HasValue)
.SomewayToCombineValidators(validator)
}
}
解决方案
推荐阅读
- c++ - c++ 代码块中的“this”关键字指的是什么?
- javascript - 如何在视口宽度减小的情况下将 a 从最大高度缩小到最小高度?
- python - django.db.utils.OperationalError:SQLite3 数据库中没有这样的表
- flutter - 类型不匹配:推断类型为 PluginRegistry 但应为 FlutterEngine
- javascript - 如何对重复对象键日值的数组进行排序并创建一个具有对象坐标的新数组,其中 y 将保存重复值
- html - 你可以有背景图像:线性渐变(到中心......);
- python - 在所有列都在字符串中的python数据框中添加密集排名
- sql - 如何在某个日期范围内合并两个数据框?
- asp.net - 找不到类型或命名空间名称“ApiVersionDescription”(您是否缺少 using 指令或程序集引用?)
- javascript - 如何为 Exam Web 应用程序创建完全关闭的窗口