Pergunta

Eu não consigo começar este trabalho, aqui está o meu código (simplificada): -

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

public class Section
{
    public Report Report;
}

Estou faltando alguma coisa?

Foi útil?

Solução

Seus objetos contêm referências circulares que não é suportado pelo classe XmlSerializer . Você poderia, em vez olhar para a DataContractSerializer que suporta tais cenários.

Outras dicas

Você deve se certificar de que você sabe como você deseja que essas classes para serializar e desserializar. Escreva o XML que você quer como resultado, e descobrir como você deseja objetos para se tornar XML e vice-versa. Não é uma escolha óbvia não.

Aqui está a minha solução. Pode não ser tão elegante como você esperaria:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top