Moyen le plus facile pour sérialiser classe C# comme texte XML

Tout en essayant de répondre à une autre question, j'ai été la sérialisation d'un objet de C# pour une chaîne XML. Il a été étonnamment difficile; c'était le plus court extrait de code que je pouvais venir:

var yourList = new List<int>() { 1, 2, 3 };
var ms = new MemoryStream();
var xtw = new XmlTextWriter(ms, Encoding.UTF8);
var xs = new XmlSerializer(yourList.GetType());
xs.Serialize(xtw, yourList);
var encoding = new UTF8Encoding();
string xmlEncodedList = encoding.GetString(ms.GetBuffer());

Le résultat est correct:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfInt
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <int>1</int>
    <int>2</int>
    <int>3</int>
</ArrayOfInt>

Mais l'extrait est plus compliqué que je pense qu'il devrait être. Je ne peux pas croire que vous devez savoir à propos de l'encodage et MemoryStream pour cette simple tâche.

Est-il un moyen plus court de sérialiser un objet en chaîne de caractères XML?

OriginalL'auteur Andomar | 2009-11-15