XmlSerializer Serializar variable vacía para usar ambas etiquetas?

Quiero poder cargar una clase xml serializada en un Soap Envelope. Estoy empezando, así que no estoy llenando las entrañas, así que parece que

<Envelope    
xmlns="http://schemas.xmlsoap.org/soap/envelope/" /> 

Quiero que aparezca como:

<Envelope    
xmlns="http://schemas.xmlsoap.org/soap/envelope/" ></Envelope>`


La clase que escribí es esta:

[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://schemas.xmlsoap.org/soap/envelope/",ElementName="Envelope", IsNullable = true)]
public class TestXmlEnvelope
{
  [System.Xml.Serialization.XmlElement(ElementName="Body", Namespace="http://schemas.xmlsoap.org/soap/envelope/")]
  public System.Collections.ArrayList Body = new System.Collections.ArrayList();
} //class TestXmlEnvelope`

Estoy usando esto como un ejemplo, ya que otras personas podrían quererlo en un elemento individual. Estoy seguro de que esto debe ser simple, pero lamentablemente no sé la palabra clave correcta para esto.

Como siempre gracias por tu ayuda.

[Editar] El error aparece cuando trato de usar esta instrucción

System.Xml.Serialization.XmlSerializer xmlout = new System.Xml.Serialization.XmlSerializer(typeof(TestXmlEnvelope));
System.IO.MemoryStream memOut = new System.IO.MemoryStream();
xmlout.Serialize(memOut, envelope, namespc);
Microsoft.Web.Services.SoapEnvelope soapEnv = new Microsoft.Web.Services.SoapEnvelope();
soapEnv.Load(memOut);

Me da el error "Elemento raíz no encontrado".

[Editar] Solucioné el error, el problema era que después de serializar el objeto no configuré memOut.Position = 0. Aún así, espero que esta pregunta ayude a otras personas que quieran hacer esto.

Respuestas a la pregunta(3)

Su respuesta a la pregunta