2011-01-23 5 views
2

추상 기본 클래스 유형을 노출하고 내 클래스가 파생 된 것으로 간주되는 응용 프로그램 용 플러그인을 작성하고 있습니다. 나중에 추출을 위해 인스턴스화 된 클래스를 저장하면 응용 프로그램에서 XML 직렬자를 사용하여 직렬기를 노출하지 않고 클래스를 직렬화합니다. 내 클래스를 직렬화 할 때XML- 기본 클래스 또는 serializer 인스턴스에 액세스하지 않고도 파생 클래스를 serialize 할 수 있습니까?

분명히

는의 XML 시리얼 라이저는 XmlInclude 또는 SoapInclude를 사용합니다.이 예상되지 않은 메시지

"유형 YourDerivedType과 더불어, System.InvalidOperationException 예외가 발생 속성에 정적으로 알 수없는 유형 을 지정하십시오. " 나는 기본 클래스에 대한 액세스 권한이없는 때문에

, 내가 XmlInclude 속성을 장식 할 수 없으며, 응용 프로그램이 자신의 시리얼 라이저를 사용하기 때문에, 나는 new XmlSerializer을 사용할 수 없습니다, 생성자 내 파생 된 유형을 통과, 이 XmlSerializer를 사용하여 serialize합니다.

내 클래스를 직렬화하여이 예외를 제거 할 수있는 방법에 대한 제안 (또는!)

+0

이렇게하면 모든 것이 힘들어집니다. 연결중인 애플리케이션에서 제공하는 가이드 라인이 없습니까? 플러그인을 위해이 아키텍처를 특별히 설계했다면 간단해야하거나 엉망으로 만들었을 것입니다. 그것이 설립 된 응용 프로그램의 경우 아마 후자가 아닙니다. 당신이 잘못 접근하고 있는지보기 위해 당신이 참조 할 수있는 모든 예가 있습니까? – Rory

+0

로리에 동의합니다. 이상적으로 생각해야 할 것보다 더 복잡합니다. 나는 우리가 그 일을 어떻게 얻을 수 있는지에 대한 제안을 위해 신청서의 제품 팀과 연락했다. – Satyajit

답변

1

파생 클래스에서 IXmlSerializable을 구현하고 XML 직렬 변환기가이를 인식하고 사용하기를 바랍니다. 그렇지 않다면 운이 나쁘다고 생각합니다.

클래스에 매개 변수가없는 생성자가 있는지 확인하십시오 (잊을 수 있지만 필수적입니다. IXmlSerializable에 필수).

+0

안녕하세요, Rory, 예. 방금 시도했는데 다른 System.InvalidOperationException 예외가 발생했습니다. "YourDerivedType 형식은 YourDerivedType을 매개 변수, 반환 형식 등으로 사용하는 데 사용할 수 없습니다. 또는 클래스 또는 구조체의 멤버 인 경우 매개 변수, 반환 형식 또는 멤버를 YourDerivedType 형식으로 선언해야합니다 (개체가 될 수 없습니다). YourDerivedType 형식의 개체는 ArrayLists와 같은 형식이 지정되지 않은 컬렉션에서 사용할 수 없습니다. " 이 예외 때문에 IXmlSerializable 메서드가 실제로 호출되는 시점에 도달하지 못했습니다. – Satyajit

관련 문제