2010-12-15 18 views
6

mam coś klasa Node tak:C#: serializacji XML węzłów z linkami cyklicznych

class Node { 
    IEnumerable<Node> inputs; 
} 

Które w zasadzie definiuje prosty wykres. Chcę serializować mój wykres do postaci czytelnej dla człowieka, więc normalnie powiedziałbym, że xml byłby drogą do zrobienia. Ale XML nie został napisany z myślą o cyklicznych zależnościach :)

A więc - jaki byłby najlepszy sposób na uszeregowanie mojego wykresu?

mogę myśleć kilka sposobów:

  • rów XML, stworzyć własny format.
  • wykorzystanie XML, oznacz każdy węzeł z unikalnym ID, przechowywać connection-list oddzielić od węzłów i ustępują po załadunku

Ale myślę, że inni muszą przedtem miał ten sam problem, więc nie mogą być pewne lepsze opcje. Czy ktoś wie o solidnym podejściu?

Odpowiedz

3

Dla xml, chciałbym iść z podejściem id (zmiana modelu DTO tak, że nie jest cykliczny).

Należy pamiętać, że DataContractSerializer może automatycznie obsługiwać cykliczne wykresy obiektów, przekazując w true dla opcji preserveObjectReferences w przeciążonych konstruktorach; nie będzie tak proste jak wyjście, ale będzie nadal możliwe do odczytania.

1

Po przełączeniu na WCF DataContractSerializer, można zachować Referencje obiekcie (w 3.5 SP 1 i nowsze)

[DataContract(IsReference=true)] 

Sowmy ma dobrą napisać here

Powiązane problemy