Apariencia
AsyncEnumerableResult: leer progresivamente
AsyncEnumerableResult<T> envuelve un IAsyncEnumerable<T>. Usa await foreach para pedir elementos y await using para liberar el resultado.
csharp
using Greencore.Platform.Errors;
using Greencore.Platform.Results;
await using var resultado = AsyncEnumerableResult<int>.Ok(GenerarAsync());
if (resultado.IsError)
{
Console.WriteLine(resultado.Error.Message);
return;
}
await foreach (var numero in resultado)
Console.WriteLine(numero);
static async IAsyncEnumerable<int> GenerarAsync()
{
for (var numero = 1; numero <= 3; numero++)
{
await Task.Yield();
yield return numero;
}
}El envoltorio no materializa toda la secuencia: delega cada petición de avance al enumerador subyacente. La propia fuente puede tener su búfer o producción independiente.
Enumerar un fallo inicial lanza InvalidOperationException. Una excepción posterior del iterador se propaga durante la lectura y no cambia IsOk.
resultado, resultado.Value y la rama de éxito de Match acceden a la misma secuencia administrada.
Recuerda: el resultado puede estar listo ahora y sus elementos llegar después.
Siguiente: cancelar una lectura.