utilizando el atributo XmlArrayItem sin XmlArray en la clase Serializable C #

Quiero XML en el siguiente formato:

 ... ... ...  

Intento crear una Configuration clase que tenga el atributo [Serializable] . Para serializar los nodos de credenciales, tengo lo siguiente:

 [XmlArray("configuration")] [XmlArrayItem("credentials", typeof(CredentialsSection))] public List Credentials { get; set; } 

Sin embargo, cuando serializo esto a XML, el XML tiene el siguiente formato:

  ...  ... ...   

Si [XmlArray("configuration")] la línea [XmlArray("configuration")] , obtengo lo siguiente:

  ...  ... ...   

¿Cómo puedo serializar esto de la manera que quiero, con múltiples nodos dentro del único nodo raíz ? Quería hacer esto sin tener que implementar IXmlSerializable y hacer una serialización personalizada. Así es como se describe mi clase:

 [Serializable] [XmlRoot("configuration")] public class Configuration : IEquatable 

Lo siguiente debe serializar correctamente de la manera que desee. La clave es [XmlElement("credentials")] en la lista. Hice esto tomando su xml, generando un esquema (xsd) desde Visual Studio. Luego ejecutando xsd.exe en el esquema para generar una clase. (Y algunas ediciones pequeñas)

 public class CredentialsSection { public string Username { get; set; } public string Password { get; set; } } [XmlRoot(Namespace = "", IsNullable = false)] public class configuration { ///  public string logging { get; set; } ///  [XmlElement("credentials")] public List credentials { get; set; } public string Serialize() { var credentialsSection = new CredentialsSection {Username = "a", Password = "b"}; this.credentials = new List {credentialsSection, credentialsSection}; this.logging = "log this"; XmlSerializer s = new XmlSerializer(this.GetType()); StringBuilder sb = new StringBuilder(); TextWriter w = new StringWriter(sb); s.Serialize(w, this); w.Flush(); return sb.ToString(); } } 

dar la siguiente salida

   log this  a b   a b