2015-06-09 2 views
0

Каков наилучший способ сериализации с помощью классов XmlSerialize с перекрестной ссылкой?сериализовать несколько ссылочных объектов с помощью XmlSerialize

В приведенном ниже примере несколько классов B могут указывать на один и тот же объект A. Как я сериализую C, не записывая несколько A в xml? Мои классы большие, поэтому я предпочитаю использовать автоматическую сериализацию и не писать полный

public class A{ 
    int id; 
} 

public class B{ 
    int id; 
    A a; 
} 

public class Root{ 
    B[] bArray; 
} 

ответ

0

не должны сделать никакой разницы, что классы зацикленной.

[XmlRoot("A")] 
    public class A 
    { 
     [XmlElement("id")] 
     int id; 
    } 
    [XmlRoot("B")] 
    public class B 
    { 
     [XmlElement("id")] 
     int id; 
     [XmlElement("A")] 
     A a; 
    } 
    [XmlRoot("Root")] 
    public class Root 
    { 
     [XmlElement("B")] 
     List<B> bArray; 
    } 
​ 
1

XmlSerializer не может обрабатывать перекрестные ссылки. Попробуйте использовать DataContractSerializer с PreserveObjectReferences = true.

Смежные вопросы