Skip to content

Estructuras fijas: familias tipadas ​

Una estructura fija declara mediante tipos las relaciones entre razones. Fija el contrato de composición, no la cantidad de nodos: cada fallo puede incluir distintas causas compatibles con ese contrato.

Un árbol de diagnóstico conserva qué falló, dónde ocurrió y por qué. La raíz identifica el fallo; sus razones añaden contexto y pueden contener otras razones.

text
Raíz: importación fallida
└── Contexto: fila 12
    └── Contexto: celda B12
        └── Causa: valor obligatorio

Una familia de diagnóstico define la raíz y los tipos de razones que se pueden relacionar. Cada error construido es una instancia de ese diseño. En una familia tipada, cada razón declara el tipo de su padre.

Familias disponibles ​

FamiliaRaízOrganización
DominioDomainErrorEntidades, propiedades y validaciones
ProcesosProcessErrorExcepción, timeout, cancelación y otras causas de ejecución
PropiaError<TSelf>, DomainError<TSelf> o ProcessErrorNiveles definidos por la aplicación

La familia de procesos pertenece a Greencore.Platform.Processes. La infraestructura común pertenece a Greencore.Platform.Errors. Los proyectos actuales requieren .NET 10.

Contrato compartido ​

La raíz deriva de Error; tanto raíces como razones implementan INode. Exponen Message, Reasons, OwnedReasons, Metadata y Parent. Las colecciones son de solo lectura.

OperaciónDevuelvePropósito
AddReason(...)Hijo agregadoContinuar construyendo dentro del hijo
WithReason(...)ReceptorAgregar causas al mismo nivel
WithMetadata(...)ReceptorAsociar información adicional
ToString()TextoMostrar el diagnóstico

Un hijo propio tiene un único padre. La raíz tiene Parent == null. Las APIs rechazan ciclos y pertenencias incompatibles. Para compartir una causa existente consulta referencias de errores.

Qué aporta el tipado ​

El compilador comprueba las relaciones declaradas: una razón de celda puede exigir una fila como padre. Los consumidores reconocen tipos y propiedades sin interpretar mensajes como “Fila 12”.

El contrato limita el padre de cada razón; no establece una lista cerrada de hijos. Se pueden definir nuevos tipos de razones para un padre existente. Las familias genéricas también permiten razones textuales vinculadas al padre.

Los códigos de DomainError, DomainReason y ProcessReason son identificadores independientes del mensaje. Las propiedades específicas, como una coordenada, no se convierten automáticamente en metadatos ni necesariamente aparecen en el formato textual.

Elegir y continuar ​

Construir un diagnóstico registra un fallo detectado. No ejecuta validaciones, lee archivos ni inicia operaciones.

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