Pregunta

Parece que no consigo que funcione, aquí está mi código (reducido): -

[XmlRoot("report")]
public class Report
{
    [XmlArray("sections"), XmlArrayItem("section")]
    public List<Section> Sections;
}

public class Section
{
    public Report Report;
}

¿Me estoy perdiendo algo?

¿Fue útil?

Solución

Sus objetos contienen referencias circulares que no es compatible con Clase XmlSerializer . En su lugar, puede consultar DataContractSerializer , que admite tales escenarios.

Otros consejos

Debería asegurarse de saber cómo quiere que esas clases se serialicen y deserialicen. Escriba el XML que desee como resultado y descubra cómo desea que los objetos se conviertan en XML y viceversa. No es una obviedad.

Aquí está mi solución. Puede que no sea tan elegante como cabría esperar:

public class Report
{
  //...


  void PostLoad()
  {
    foreach(Section s in Sections)
    {
      s.Report = this;
    }
  }

  public static Report Load(string filename)
  {
    // Load using an XmlSerializer
    Report report = ...;

    report.PostLoad();

    return report;
  }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top