2010-01-29 3 views
0

DataContractSerializer를 사용하여 Exception 객체 (파생 예외, 예 : FileNotFoundException 포함) 목록을 직렬화하려면 어떻게합니까?DataContractSerializer 및 List (Of Exception)

해결 방법을 고안하기 위해 목록의 형식을 알지 못하는 serializer에 대해 항상 오류가 발생합니다. 이 작품

Dim XmlSerializer As New DataContractSerializer(_ 
    ExceptionsList.GetType(), ExceptionsList.Select(Function(i) i.GetType)) 
XmlSerializer.WriteObject(Stream, List) 

:

그것은 같은 것을 보았다. 방금 알려진 유형의 목록에 모든 다른 예외 유형을 추가하면 작동합니다. 하지만 deserialization에 나는 붙어있다. 문제는 파일에 미리 저장된 예외의 유형을 모른다는 것입니다.

답변

0

나는 당신이 SOL이라고 생각합니다. serializer는 입력에있을 수있는 유형을 알아야합니다.

NetDataContractSerializer을 사용해보세요. 직렬화되는 데이터 외에도 유형 메타 데이터가 출력됩니다.

+0

이 작품 덕분에, 나는 왜 당신이 정규 시리얼 라이저로 이것을 할 수 없는지 궁금합니다. – prof23030

+0

일반 직렬 변환기는 상호 운용 가능한 XML로 직렬화하기 때문에. 가능한 유형을 알려 주어야합니다. 그렇지 않으면 역 직렬화 할 수 없습니다. 'NetDataContractSerializer'는 타입 메타 데이터를 XML에 추가함으로써이 문제를 해결합니다. 이것은 또한 비 .NET 서비스 또는 클라이언트와 통신하는 데 사용할 수없는 이유이기도합니다. –

+0

방금 ​​NetDataContractSerializer가 중간 신뢰로 직렬화 할 수 없다는 것을 알았습니다. (공유 호스팅에서 보안 예외가 발생하면 직렬화하려고 시도합니다.) 다른 방법을 찾아야 할 것입니다. – prof23030

0

예외를 직렬화기로 System.Exception으로 보내지 않으려 고 시도 할 수 있습니다. 나는 이것이 실제적인 영향을 미치지는 않을지 모르지만 최소한 통과하는 타입은 뭔가 표준으로 등록 할 수 있습니다.

(어두운 곳에서 촬영)

관련 문제