Este repositorio implementa el patrón Result en C#, una forma segura y expresiva de manejar operaciones que pueden fallar sin recurrir a excepciones.
Result: representa el estado de éxito o error. No incluye un valor en caso de éxito, pero sí instancias deErroren caso de fallo.Result<TSuccess>: versión genérica que encapsula un valor cuando la operación es exitosa, o instancias deErrorsi falla.Result<TSuccess, TError>: versión genérica que encapsula un valor de éxito o un error fuertemente tipado.- Métodos
Matchpermiten manejar ambos estados (éxito y error) de forma funcional y expresiva. - Propiedades
IsSuccessyIsFailurefacilitan la inspección rápida del estado del resultado. - Pruebas unitarias completas con xUnit para garantizar la confiabilidad del patrón.
Las pruebas cubren:
- ✅ Creación de resultados exitosos y fallidos
- ✅ Validación de propiedades (
IsSuccess,IsFailure) - ✅ Comportamiento de
Matchcon funciones y acciones - ✅ Acceso seguro a
ValueyError(con excepciones en estado incorrecto)
var result = Result<string, string>.Ok("Orden creada");
var mensaje = result.Match(
onSuccess: val => $"Éxito: {val}",
onError: err => $"Error: {err}"
);var result = Result<string>.Fail("Falló la operación");
result.Match(
onSuccess: () => Console.WriteLine("¡Éxito!"),
onError: r => Console.WriteLine($"Error: {r.ErrorMessage}")
);El patrón Result permite:
- Evitar excepciones para control de flujo
- Expresar claramente el éxito o fracaso de una operación
- Facilitar pruebas y composición funcional
- El código ha sido implementado con .NET 9.
- xUnit para pruebas
¡Contribuciones y sugerencias son bienvenidas!