¿Cómo genero una secuencia a partir de una cadena?
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");
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 StreamWriter
no ser eliminado. StreamWriter
es solo un contenedor alrededor del flujo base y no utiliza ningún recurso que deba eliminarse. El Dispose
método cerrará el subyacente Stream
en el que StreamWriter
se está escribiendo. En este caso ese es el que MemoryStream
queremos volver.
En .NET 4.5 ahora hay una sobrecarga StreamWriter
que 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?
Otra solución:
public static MemoryStream GenerateStreamFromString(string value)
{
return new MemoryStream(Encoding.UTF8.GetBytes(value ?? ""));
}