2012-10-30 3 views
0

역 직렬화에 문제가 있습니다. 선을 그릴 수있는 그리기 응용 프로그램을 생성한다고 가정 해보십시오. 우리는 한 줄의 그리기 방법을 담당하는 클래스를 가지고 있으므로 clsLine이라고 부르 자.캐스팅 및 역 직렬화

이제 각 행은 시작과 끝에서 다른 행과 N 개의 연결을 가질 수 있습니다. 지금까지 모든게 괜찮아. 이제 직렬화를 위해 xml 파일에 도면을 저장해야합니다. 문제는 XML 파일을 열어 예외를 가져 오는 데 사용 된 개체에 다시 그림을 deserialize 할 때입니다.

실제로 각 줄마다 연결된 줄 또는 선 세그먼트를 끝에 추가하기 위해 목록마다 목록을 사용하고 있습니다.

업데이트 :

public class clsLine : ShapeBase 
{ 
    //has all the properties and methods that should be applied to a line 
    //e.g. length, angle, and etc. 
    Connections endConnections = new Connections(); 
    Connections startConnections = new Connections(); 

} 


public class Connection 
{ 
    clsLine segment; 
    int handle; 

    public clsLine Segment 
    { 
     get { return segment; } 
     set { segment = value; } 
    } 

    public int Handle 
    { 
     get { return handle; } 
     set { handle = value; } 
    } 
} 



public class Connections : List<Connection> 
{ 
    public bool Contains(ShapeBase instance) 
    { 
     foreach (Connection con in this) 
     { 
      if (instance.Equals(con.Segment)) 
       return true; 
     } 
     return false; 
    } 
} 

지금으로 deserialzation 동안 우리는 예외가 : '. 예외가 발생했습니다'

'형식의 컬렉션에 값을 추가'

가 OurProjectNameSpace.Connections

제 동료는 "연결"에서 "연결"로 변환하는 것이 원인이라고 설명합니다. Connections는 연결 유형 또는 배열의 목록입니다.

여기 좀 고칠 수 있습니까?

감사합니다.

+0

당신은 예외가 실제로 무엇을 게시 할 수 있습니까? InnerException을보아야 할 수도 있습니다. –

+0

{ "값 \"네임 스페이스. 연결 \ "은 \"네임 스페이스입니다. 연결 \ "이 아니고 일반 콜렉션에서 사용할 수 없습니다. \ r \ n 매개 변수 이름 : 값"} 감사합니다. –

+0

공유해야합니다. 참조 할 수있는 더 많은 소스 코드. 'clsLine','this','Connection' 등은 무엇입니까? – SliverNinja

답변

1

이러한 유형의 직렬화 및 직렬화 해제 루틴을 직접 만들 수도 있습니다. 특히 컬렉션 유형 및 그 파생어를 사용할 때 (비) 직렬화 프로세스를 제어하려고 할 수 있습니다.

방법 - 사용자 정의 직렬화을 여기에서 찾을 수 있습니다의 정보 : http://msdn.microsoft.com/en-us/library/ty01x675(v=vs.80).aspx

당신은 또한 IXmlSerializable 구현 할 수 있습니다 XML 직렬화 사용 : http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable(v=vs.80).aspx