你有没有试过类似的东西?
public class IsProcessFileValid : PropertyValidator
{
public IsProcessFileValid(): base("{ValidationMessage}") {}
protected override IsValid(PropertyValidatorContext context)
{
if (!IsProcessFileValid1(context))
context.MessageFormatter.AppendArgument("ValidationMessage",
"Custom validation message #1");
if (!IsProcessFileValid2(context))
context.MessageFormatter.AppendArgument("ValidationMessage",
"Custom validation message #2");
// ...etc
return true;
}
private bool IsProcessFileValid1(PropertyValidatorContext context)
{
// logic
return false;
}
private bool IsProcessFileValid2(PropertyValidatorContext context)
{
// logic
return false;
}
// ...etc
}
随着扩展方法:
public static class IsProcessFileValidExtensions
{
public static IRuleBuilderOptions<T, object> MustBeValidProcessFile<T>
(this IRuleBuilder<T, object> ruleBuilder)
{
return ruleBuilder.SetValidator(new IsProcessFileValid());
}
}
...然后使用它,而自定义WithMessage
:
public CreateProcessValidator()
{
RuleFor(x => x.ProcessFile).MustBeValidProcessFile();
}
通过创建一个自定义PropertyValidator
,你可以封装默认的验证消息在这个班级内,并使之充满活力。但是,在声明RuleFor
时,不得使用.WithMessage
扩展名,因为它会覆盖在PropertyValidator
内直接定制的默认验证消息。
是,分割方法是最初的想法,但由于小法之一,我试图验证XML文件对XSD这个心不是解决我的问题,需要通过导致用户... – Mennion 2013-04-09 13:50:27