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");
                }
            );
        }
    }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage