Самый простой способ - это использовать MemoryStream
:
// To give code something to read
Stream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(text));
CallRealCode(memoryStream);
// To give code something to write:
Stream memoryStream = new MemoryStream();
CallRealCode(memoryStream);
string text = Encoding.UTF8.GetString(memoryStream.ToArray());
(конечно же, настроить для соответствующей кодировки.)
В качестве альтернативы, если вы можете предоставить свой код сTextWriter
вместо Stream
, вы можете использовать StringWriter
.Следует отметить, что по умолчанию StringWriter
будет объявлять о своем желании использовать UTF-16.Вы можете переопределить это поведение с помощью подкласса, например так:
public sealed class Utf8StringWriter : StringWriter
{
public override Encoding Encoding { get { return Encoding.UTF8; } }
}
(Очевидно, вы можете сделать это более гибким способом, тоже ...)