Beenden Sie die fließende Überprüfung bei erstem Fehler
Ich definiere eine Validierung für meine Anforderungsobjekte. Ich möchte, dass der Prüfer beim ersten Ausfall stoppt und nicht nur der Prüfer in derselben Kette. Im folgenden Beispiel, wenn meineTechnicalHeader
Objekt ist null, ich bekomme eine NullReference-Ausnahme, wenn die Validierung die Regel für erreichtTechnicalHeader.MCUserid
.
In schlechten Worten, ich möchte eine bedingte Validierung für die letzten drei Regeln im folgenden Code gemäß dem Ergebnis der ersten Regel durchführen
using System;
using ServiceStack.FluentValidation;
using MyProj.Services.Models;
namespace MyProj.Services.BaseService.Validators
{
public class BaseValidator<T> : AbstractValidator<T>
where T : RequestBase
{
public BaseValidator()
{
RuleSet(ServiceStack.ApplyTo.Put | ServiceStack.ApplyTo.Post,
() =>
{
this.CascadeMode = CascadeMode.StopOnFirstFailure;
RuleFor(x => x.TechnicalHeader).Cascade(CascadeMode.StopOnFirstFailure).NotNull().WithMessage("Header cannot be null");
RuleFor(x => x.TechnicalHeader).NotEmpty().WithMessage("Header cannot be null");
RuleFor(x => x.TechnicalHeader.Userid).NotEmpty().WithMessage("Userid cannot be null or an empty string");
RuleFor(x => x.TechnicalHeader.CabCode).GreaterThan(0).WithMessage("CabCode cannot be or less than 0");
RuleFor(x => x.TechnicalHeader.Ndg).NotEmpty().WithMessage("Ndg cannot be null or an empty string");
}
);
}
}
}