Если вы просто хотите вывести содержимое списка каталогов, возможно, проще всего использовать XmlWriter:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(@"c:\path\filename.xml", settings))
{
writer.WriteStartElement("dirs");
dirs.ForEach(d => writer.WriteElementString("dir", d));
writer.WriteEndElement(); // dirs
}
Результат будет выглядеть так:
<?xml version="1.0" encoding="utf-16"?>
<dirs>
<dir>c:\</dir>
<dir>c:\Program Files</dir>
...
</dirs>
Обратите внимание, что это может быть не совсем то, что обычно подразумевается, когда речь идет о сериализации в .NET, поскольку среди прочего она не содержит информации о том, какой тип объекта содержит данные, поэтому вы не можете использовать это для десериализации XML данные в список с использованием доступных механизмов сериализации в рамках.
Обновление
Если вместо этого вы хотите сделать это более "в стиле фреймворка", вы можете использовать BinaryFormatter:
// serialize the object to disk
BinaryFormatter formatter = new BinaryFormatter();
using (Stream stream = File.OpenWrite(@"c:\temp\dirlist.data"))
{
formatter.Serialize(stream, dirs);
}
// at some other point, when you want to deserialize
BinaryFormatter formatter = new BinaryFormatter();
List<string> dirList;
using (Stream stream = File.OpenRead(@"c:\temp\dirlist.data"))
{
dirList = (List<string>)formatter.Deserialize(stream);
}
В этом случае вы получите двоичный файл на диске, который не имеет особого смысла в текстовом редакторе (но он выглядит примерно так; я ввел несколько разрывов строк, чтобы сделать его более «читабельным»):
ÿÿÿÿ System.Collections.Generic.List`1[[System.String, mscorlib,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
_items_size_version c:\ c:\Program Files