문제

프로그램에서 직렬화를 처리하는 가장 좋은 방법을 찾으려고 노력하고 있습니다.

개인 필드를 직렬화하고 싶습니다 (따라서 XML 시리얼 라이저는 옵션이 아닙니다) BindingList와 같은 일반 유형을 직렬화하고 싶습니다 (SOAPSERIALIZER는 옵션이 아닙니다) 또한 이전 버전의 프로그램 버전에서 객체를 사정 할 수있는 수준의 지원을 제공하고 싶습니다.

그래서 내가 남은 것은 Binaryserializer와 Iserializable 인터페이스를 구현하여 앞으로 호환성에 대처하는 것입니다.

이 올바른지?

참고 :이 프로젝트를 찾았다 고 말해야합니다. 그러나 프로젝트는 죽은 것처럼 보였고 나는 그것을 작동시킬 수 없었습니다 (파일 누락 오류)http://sourceforge.net/project/showfiles.php?group_id=196509

도움이 되었습니까?

해결책

와 함께 BinaryFormatter, 당신이 사용할 수있는 [OptionalField], 그러나 이것은 여전히입니다 매우 취성.

어때 protobuf-net? 이 모든 것을 수행하고 Binaryformatter와 관련된 버전 관리 문제가 없습니다. Google의 "프로토콜 버퍼"형식을 기반으로하므로 설계 버전이 견딜 수 있고 확장 가능한 경우 (공개 : 저는 저자이므로 편향 될 수 있습니다).

대안 적으로, DataContractSerializer 현장 직렬화를 지원합니다. 방금 설정했습니다 [DataMember] 속성 대신 필드에 대해 (.NET 3.0 필요).

다른 팁

예, iserializable을 구현해야합니다.

핵심 사항은 다음과 같습니다

  • GetObjectData (SerializationInfo info, StreamingContext Context)를 구현하십시오. 여기에서 정보 객체에 키 쌍을 추가해야합니다.
  • 직렬화 생성자 MyClass (SerializationInfo Info, StreamingContext Context) 구현. 여기에서 정보 객체에서 값을 가져와야합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top