Apariencia
Declarar el tipo de error
Usa Result<TValue, TError> cuando el consumidor necesita conocer el tipo de la raíz del error.
csharp
using Greencore.Platform.Errors;
using Greencore.Platform.Results;
using Greencore.Platform.Results.Extensions;
var resultado = Result<int, StockError>.Fail(new StockError("SKU-01"));
if (resultado.IsError)
Console.WriteLine(resultado.Error.ProductCode); // SKU-01.
Result<string, StockError> texto = resultado.Map(valor => valor.ToString());
Console.WriteLine(texto.IsError); // True.
public sealed class StockError(string productCode) : Error("Stock insuficiente.")
{
public string ProductCode { get; } = productCode;
}La variante sin valor es VoidResult<TError>, con fábricas Ok() y Fail(error). No exige constructor sin parámetros en el error: entregas la instancia.
Map conserva TError. Las sobrecargas tipadas de Bind encadenan resultados con el mismo TError. Si ensanchas la variable a Result<TValue> o Result, sus consultas y extensiones se resuelven desde ese tipo menos específico.
Recuerda: TError describe la raíz, no todos los descendientes.
Para colecciones con error tipado, consulta conservar el tipo de colección.