Вместо использования StringBuilder
, попробуйте использовать TextWriter
(который имеет во многом похожий API, но который может выполнять запись в ряд базовых адресатов, включая файлы) - т.е.Стоит отделить код, который знает о файлах, от кода, который знает о том, как записывать данные, т. е.
using(var writer = File.CreateText(path))
{
Serialize(writer);
}
...
void Serialize(TextWriter writer)
{
...
}
, что облегчает запись в разные цели.Например, теперь вы можете делать и в памяти:
var sw = new StringWriter();
Serialize(sw);
string text = sw.ToString();
Дело в том, что ваш код Serialize
не нужно было менять, чтобы разместить другую цель.Это также может быть запись непосредственно в сеть или запись через поток сжатия / шифрования.Очень универсальный.