¿Cómo genero una secuencia a partir de una cadena?

Resuelto Omu asked hace 14 años • 13 respuestas

Necesito escribir una prueba unitaria para un método que toma una secuencia que proviene de un archivo de texto. Me gustaría hacer algo como esto:

Stream s = GenerateStreamFromString("a,b \n c,d");
Omu avatar Dec 10 '09 15:12 Omu
Aceptado
public static Stream GenerateStreamFromString(string s)
{
    var stream = new MemoryStream();
    var writer = new StreamWriter(stream);
    writer.Write(s);
    writer.Flush();
    stream.Position = 0;
    return stream;
}

No olvides usar Usando:

using (var stream = GenerateStreamFromString("a,b \n c,d"))
{
    // ... Do stuff to stream
}

Sobre el StreamWriterno ser eliminado. StreamWriteres solo un contenedor alrededor del flujo base y no utiliza ningún recurso que deba eliminarse. El Disposemétodo cerrará el subyacente Streamen el que StreamWriterse está escribiendo. En este caso ese es el que MemoryStreamqueremos volver.

En .NET 4.5 ahora hay una sobrecarga StreamWriterque mantiene abierto el flujo subyacente después de eliminar el escritor, pero este código hace lo mismo y también funciona con otras versiones de .NET.

Consulte ¿Hay alguna forma de cerrar un StreamWriter sin cerrar su BaseStream?

Cameron MacFarland avatar Dec 10 '2009 08:12 Cameron MacFarland

Otra solución:

public static MemoryStream GenerateStreamFromString(string value)
{
    return new MemoryStream(Encoding.UTF8.GetBytes(value ?? ""));
}
joelnet avatar Mar 08 '2011 21:03 joelnet