2012-02-07 4 views
3

CustomLineCap에는 SerializableAttribute이 적용되지 않습니다.CustomLineCap 클래스의 인스턴스를 serialize하는 방법

이 형식의 속성을 현재 BinaryFormatter으로 직렬화/역 직렬화되고있는 개체 그래프에 추가하려고합니다.

XML 직렬화로 전환하려고했지만 추가 요구 사항이 많아서 그 esp를 속일 필요가 없습니다. 내 코드가 아니기 때문에. 다운로드 한 오픈 소스입니다.

BinaryFormatter에 속성을 무시하는 방법이 있다면 작동 할 수 있습니다.

나는 그것을 하위 클래스로 만들고 싶어. 그 중 하나가 작동할지 모르겠습니다.

+0

CustomLineCap을 의미합니까? CustomEndCap이라는 실제 클래스를 찾을 수없는 것 같습니다. – tyranid

답변

1

CustomLineCap class의 인스턴스를 직접 직렬화 할 수 없습니다. 그것은 MarshalByRefObject class에서 파생됩니다. 그리고 그것이 이 직렬화 될 수 없다는 표시가 아니지만 거의 입니다. 항상입니다.

MarshalByRefObject 클래스는 일반적으로 인스턴스에서 파생 된 개체가 인스턴스가있는 응용 프로그램 도메인에만 컨텍스트가 있음을 나타내는 지표입니다. 이 경우, CustomLineCap 인스턴스는 GDI object이며, 처리 중에는 (처리에 명시 적으로 연결되어있는) 모든 의미가 있습니다. , 당신이 다음 직렬화 할 CustomLineCap 인스턴스의 속성을 노출하고 그 를 직렬화 캡처 래퍼를 만들 adapter pattern를 사용하는 것이 좋습니다이라고 말했다

.

이것은 일반적으로 클래스로 가져 가려는 방식으로, 해당 도메인 외부에서 유지되도록 일련 번호를 지정할 때 더 이상 이해할 수없는 특정 도메인에 연결된 컨텍스트를가집니다.

SerializableAttribute을 서브 클래스에 적용하면 모든 필드 (사용자가 액세스 할 수없는 비공개 필드도 포함)가 직렬화된다는 것을 의미하므로 서브 클래 싱이 작동하지 않습니다. 생성 된 응용 프로그램 도메인에만 컨텍스트가있는 핸들.

관련 문제