2011-05-05 4 views
5

클래스의 인스턴스를 IsolatedStorage에 직렬화하려고합니다. SharpSerialiser을 시도했지만 공개 속성 만 직렬화 할 수 있습니다. 그러나 클래스에는 개인 멤버 (속성 없음), 정적 멤버 등이 있습니다. DataContractSerializer도 가능하다고 생각합니다. 공개 멤버 만 직렬화합니다. 그래서 직렬화 할 방법이 있습니까?비공개 멤버가 포함 된 클래스의 인스턴스를 serialize하는 방법은 무엇입니까?

감사합니다 감사합니다 vaysage

+0

일반적으로 비공개 멤버를 직렬화하지 않습니다. 거기에 특별한 이유가 있습니까? – ScruffyDuck

답변

6

실버 라이트는 가혹한 반사 보안 모델을 가지고 있으며,이를 우회하는 데 사용되는 일반적인 트릭을 지원하지 않습니다. AFAIK, 당신은 공개 회원으로 제한됩니다.

물론 수동 구현을 피하기 위해 객체를 사용자 인터페이스 및 코드 생성을 통해 부분 클래스로 자체 직렬화 할 수 있습니다.

그러나 더 나은 방법은 보조 DTO 클래스 모델을 만드는 것입니다. 그것은 변경 가능하며 공개 속성이 getset입니다. 대부분의 시리얼 라이저가 이에 만족할 것이며 DTO 모델과 기본 객체 모델간에 항상 변환 연산자를 제공 할 수 있습니다.

6

필자가 선호하는 것은 사용자가 실제로 원하는 것을 직렬화하고, 가장 빠른 직렬화 방법이며, 꼭 필요한 경우 전용 멤버를 serialize 할 수 있도록하는 사용자 지정 이진 serialization입니다. 케빈 마샬 (Kevin Marshall)은 옵션을 다루고 성능 수치를 제공하는 훌륭한 직렬화 비교 게시물을 가지고 있습니다. http://blogs.claritycon.com/kevinmarshall/2010/11/03/wp7-serialization-comparison/

+0

고맙습니다.이 링크를 통해 맞춤 이진 직렬 연결을 배울 수있었습니다.하지만 한 가지 대답 만 표시 할 수 있습니다. – Vaysage

관련 문제