2011-08-18 5 views
0

클래스의 속성을 byte [] 배열이나 스트림으로 자동으로 serialize 할 수 있습니까? 이 손으로 그것을 할 것입니다 자동화 된 솔루션이없는 경우 C#은 값만 바이트 스트림으로 serialize합니다.

Stream stream = File.Open(@"C:/traiBin.bin", FileMode.Create); 
BinaryFormatter bFormatter = new BinaryFormatter(); 
bFormatter.Serialize(stream, this.rcpt); 
stream.Close(); 

이 예

위 등 네임 스페이스, 클래스 이름, 변수 이름 포함한 전체 클래스를 직렬화.

감사합니다, 마크

+0

나머지 정보는 무엇이 문제입니까? 많은 소음에? – Carsten

+0

예, TCP를 통해 전송되며 형식은 항상 동일하므로 많은 오버 헤드가 발생하지 않습니다. 그리고 다른 쪽은 이진 포맷터를 사용하여 직렬화를 해제 할 수 없습니다. –

+0

자동 솔루션이란 무엇입니까? – Zenwalker

답변

0

나는 당신이 생각하는 :

또는 스트림은 헤더의 종류가 있도록, 자신의 직렬화 메커니즘 (요구 사항에 따라 그리 어려울 수 있습니다)를 구현하는 저장 한 유형과 유형 데이터 스트림 후에 다른 헤더와 유형 데이터 스트림을 다시 식별하는 등 ...

또는 http://www.codeproject.com/KB/cs/generic_deep_cloning.aspx과 같은 것을 사용할 수 있습니다. 직렬화의 예제 일 뿐이며, 기사 작성자는 딥 (deep) 복제 목적으로 사용합니다.

0

Marc Gravell의 protobuf implementation은 데이터 모델뿐만 아니라 DataContracts도 지원합니다. 또한 protobuf는 데이터의 최종 크기가되면 매우 가늘다.

+0

사용하기 쉽고 좋은 아이디어이지만 여전히 오버 헤드가 발생합니다. 그것은 또한 liscenced입니다 ... –

+0

그 경우 당신은'BinaryWriter'을 사용해야하고 자신의 직렬화 인터페이스 (예 :'Save (BinaryWriter writer)')가 필요할 것입니다. –

관련 문제