我正在尝试在FluentValidation中实现复杂的验证方案。
我们说我有一个汽车课。它有四个属性:Color,Make,Model,Year。
我想构建一个涉及其中三个属性的验证规则。为了对话,我们说我想要一个如下的验证规则:
if car.make = nissan and car.year = 2010 then
if car.color <> green then
throw a validation error since the system does not support 2010 nissans that are not green.
end
end
我知道这是一个愚蠢的例子。但是,我的应用程序中的验证规则涉及我的对象的多个方面。这是我质疑的核心。
我试图遵循http://fluentvalidation.codeplex.com/wikipage?title=Custom关于使用&#34;使用AbstractValidator.Custom&#34;的指导。 。
有没有人有其他工作的AbstractValidator.Custom工作示例?
提前感谢您的时间。
答案 0 :(得分:2)
以下是实现涉及多个属性的验证的简单方法
public class CarValidator : AbstractValidator<Car>
{
public CarValidator()
{
RuleFor(c => c.Color).NotEqual("Green").When(MakeIsNisssanAndYearIs2000))
}
private bool MakeIsNisssanAndYearIs2000(Car arg)
{
return arg.Make == "Nissan" && arg.Year == 2000;
}
}
public class Car
{
public string Color { get; set; }
public string Make { get; set; }
public int Year { get; set; }
}
您可以参数化MakeIsNissanAndYearIs2000
方法,以便将make和model作为参数传递给方法。但是这应该让您了解如何实现涉及多个属性的验证