Hoy voy a empezar con algo sencillo, aunque muy útil si tienes que enviar datos usando XML.
Simplemente para que te puedas hacer una idea, aunque no estoy muy convencido de la forma de quitar la codificación en la cabecera.
virtual public string Serialize()
{
StringWriter sw = new StringWriter();
XmlSerializer serializer = new XmlSerializer( this.GetType() );
XmlTextWriter w = new XmlTextWriter( sw );
w.Formatting = Formatting.Indented;
serializer.Serialize(w, this );
w.Flush();
w.Close();
string str = sw.ToString();
// Quitamos la codificación
str = str.Replace( "encoding=\"utf-16\"", "" );
return str;
}