2012-11-24 2 views
2

저는 현재 C#에서 처음으로 직렬화 작업을하고 있으며 XmlSerializer 클래스를 사용하고 있지만 문제가 있습니다. 나는 서로를 참조하는 두 클래스를 가지고 있으며, 이것은 직렬화 할 때 오류를 일으킨다.서로 참조하는 두 객체를 직렬화하기

프로젝트는 클래스 다이어그램 그리기를위한 프로그램입니다. 각 클래스 또는 그것에서 가리키는 화살표의 목록이 있습니다

public List<UMLArrow> arrowlist; 

을 그리고 모든 화살표는 시작과 끝 클래스가 있습니다, 내가하려고 할 때이 직렬화 것을 생각

public UMLClass startingClass; 
public UMLClass endClass; 

를 I 이 문제로 인해 무한 루프가 발생합니다.

<UMLClass> 
    <List<UMLArrow> > 
     <UMLClass> 
      <List<UMLArrow> > 
       ... 
      <List<UMLArrow> > 
     </UMLClass> 
    </List<UMLArrow>> 
<UMLClass> 

누구든지 해결책을 알고 있습니까?

+0

나는이 스레드를 살펴 보시기 바랍니다. => http://stackoverflow.com/questions/3815182/circular-reference-when-using-xml-serialization – MarcD

답변

2

XmlSerializer은 순환 참조를 지원하지 않습니다. 당신은 않는 serializer를 사용해야합니다. DataContractSerializer (preserveObjectReferences = true으로 초기화 된 경우) 또는 NetDataContractSerializer을 지원하므로 지원되는 직렬 변환기를 변경해야합니다.

+0

감사합니다. – ThaPal

2

고유 한 직렬화 방법을 구현 한 것 같습니다. 순환 종속성의 직렬화를 구현하기 위해해야 ​​할 일은 각 객체의 표현에 ID를 추가하고 직렬화 된 객체를 추적하는 것입니다. 객체를 직렬화 할 때 이미 직렬화되어 있는지 확인합니다. 그렇다면 개체 ID와 함께 개체에 대한 참조를 serialize하면됩니다.

+0

XmlSerializer 클래스, main 게시물이 업데이트되었습니다. 이 클래스와 순환 종속성을 나타내는 방법이 있습니까? – ThaPal

+0

XmlSerializer를 모르겠습니다. 죄송합니다. 설명서를 확인하십시오. – piokuc

관련 문제