Skip to content

Migración hacia la API recomendada ​

Índice

La biblioteca mantiene las APIs anteriores para que los consumidores existentes continúen compilando. El código nuevo debe elegir una operación por necesidad y conservar la composición explícita.

Uso anteriorUso recomendadoMotivo
Require(rule)Add(rule)Ambas registran una regla independiente; Add expresa esa semántica
Add(a).Then(b)Sequence(s => s.Add(a).Add(b))La secuencia conserva y hace visible la dependencia completa
UpdateAsync(...)UpdateWithResultAsync(...)El resultado usa FormValidationState y expone el reporte directamente
ValidateAsync(...) en sesiónEvaluateAsync(...)Evalúa de inmediato y devuelve FormValidationOperationResult
ValidateWithResultAsync(...)EvaluateAsync(...)Evita exponer DataState en una validación de formulario
ForField(path, true)ForField(path, DiagnosticView.All)La vista comunica la intención sin un booleano ambiguo
Length(limit, true, ...)MinLength(limit, ...)El nombre expresa la dirección del límite
Length(limit, false, ...)MaxLength(limit, ...)El nombre expresa la dirección del límite

Add no protege reglas posteriores. Cuando una condición depende de otra, usar una secuencia:

csharp
field.Sequence(sequence => sequence
    .Required("El correo es obligatorio.")
    .Email("El correo no es válido.")
    .Add(CustomerRules.EmailUnique));

La migración debe conservar la estructura completa. Si hay una rama independiente, mantenerla fuera de la secuencia:

csharp
// Antes: c depende de b; a es independiente.
builder.Add(a).Add(b).Then(c);

// Después.
builder
    .Add(a)
    .Sequence(sequence => sequence
        .Add(b)
        .Add(c));

Cuando el dependiente es un grupo, conservarlo como grupo dentro de la secuencia:

csharp
builder.Sequence(sequence => sequence
    .Add(a)
    .AllOf(group => group
        .Add(b)
        .Add(c)));

Las APIs avanzadas siguen disponibles para integrar reglas de dominio, construir árboles o inspeccionar trazas. El código introductorio no necesita NoRuleContext, RuleNode ni RuleDiagnostics.

Uso personal limitado. Uso comercial sujeto a autorización escrita.