Apariencia
Contratos avanzados y alcance público
Los contratos públicos se agrupan por el problema que resuelven. Esta clasificación evita tratar cada tipo como requisito de una validación cotidiana.
| Nivel | Tipos | Uso |
|---|---|---|
| Cotidiano | Validation, ValidationBuilder, ValidationPlan, ValidationReport, atajos comunes | Configurar y ejecutar validaciones de aplicación |
| Reglas compartidas | ValidationRule, IValidationDefinition, ValidationDefinition, ConditionResult<T> | Publicar catálogos, códigos estables y evidencia |
| Condiciones técnicas | IRule<T>, IAsyncRule<T>, IContextRule<T, C> | Implementar reglas reutilizables y adaptarlas a definiciones |
| Formularios | FormValidationSession, FormValidationOperationResult, Options | Coordinar edición, publicación y listas dependientes |
| Motor | RuleDefinition, RuleNode, RuleTree, RuleEvaluator, RuleDiagnostics | Construir o inspeccionar árboles manualmente |
| Compatibilidad | ILocalValidationDefinition, LocalValidationDefinition, RuleTreeBuilder, Require, Then | Integrar configuraciones existentes |
ILocalValidationDefinition<T> y LocalValidationDefinition<T> permiten adaptar reglas locales a un plan con contexto sin crear un contexto artificial. Por ese motivo todavía tienen una función distinta de IValidationDefinition<T, C>. Las APIs de compatibilidad se revisarán antes de una retirada futura; no deben usarse como primera alternativa en ejemplos nuevos.
Una regla que entrega directamente un tipo de fallo usa IValidationRule<TContext, TFailure> y ValidationRunner. Ese contrato sirve para integraciones que ya modelan su propio fallo; no sustituye ValidationPlan cuando se necesitan rutas y diagnósticos de campos.
Consumidores y decisión actual
| Contrato | Consumidores observados | Decisión |
|---|---|---|
IValidationDefinition<T, C> | ValidationBuilder, DomainRule y catálogos de ejemplos | Conservar como contrato de extensión |
ILocalValidationDefinition<T> | Fábricas locales y adaptación automática a contexto | Conservar; evita contexto artificial en reglas locales |
ValidationDefinition<T, C> | Fábricas ValidationRule y reglas contextuales de ejemplos | Conservar como implementación pública de definición |
LocalValidationDefinition<T> | Resultado de fábricas locales | Conservar mientras las fábricas lo expongan |
IValidationRule<TContext, TFailure> | ValidationRunner y validadores que producen fallos propios | Conservar como integración separada de reportes por campo |
RuleTreeBuilder<T, C> | Ejemplos avanzados y contratos de árboles | Mantener en el recorrido avanzado |
LatestEvaluation<T> | Coordinación de última operación fuera de sesiones completas | Mantener como utilidad avanzada; no promover para formularios nuevos |
Require y Then | Contratos y consumidores existentes | Compatibilidad; usar Add y Sequence en código nuevo |
No hay todavía una sustitución que permita retirar las definiciones locales sin perder inferencia o adaptación automática. Cualquier propuesta futura de retirada debe incluir una firma alternativa y verificar los consumidores anteriores.