2013-08-30 2 views
1

나는 물체를 가지고있는직렬화 및 비 표준 생성자와 객체 직렬화 - protobuf - 그물

  • , 직렬화 속성은
  • 유형의 속성을 가지고 설정이없는 직렬화 속성이
  • 을 설정할 수 없습니다 0을 사용할 때 내가 통제권이없는

내가 THIS을 읽는 시도 (내가 클래스를 편집 할 수 없습니다 의미),이 문제를 해결하기 위해 대체 수업에 대해 이야기하지만 솔직히 말해서, 내 개체의 속성을 모르는 경우이 작업을 수행하는 방법을 이해할 수 없습니다.

이 작업을 수행 할 수있는 직렬화 프레임 워크가 있습니까?

편집 : protobuf.net 으로 찾고 있어요 내가 비록 내 시나리오에서 작동하도록하는 방법을 알아낼 수 없습니다 - 임 마크가 세상을 구한다에 의해 스윙 바라고? :) - 나는 내가 RunTimeTypeModel을 사용하고

private static byte[] ClienToBytes(IScsClient client) 
{ 
    using (var memoryStream = new MemoryStream()) 
    { 
     RuntimeTypeModel.Default.Add(typeof(IScsClient), true).SetSurrogate(typeof(BinaryFormatterSurrogate<IScsClient>)); 

     Serializer.Serialize(memoryStream, client); 
     return memoryStream.ToArray(); 
    } 
} 

를 사용하는 경우 광산과 정확히 같은 문제,하지만 난 여전히 얻고있다 "형이 예상되지 않고 계약을 유추 할 수 없습니다" 을하는 this 읽기 잘못된?

+0

'인터페이스를 IScsClient'되는 새로운 데이터를 추가하려면? 또는 수업? 또는 더 나은 : 당신이 할 수있는 * 실행 가능한 예제 * (실제로 작동하지 않더라도)를 가지고 있습니까? –

+0

예! - IScsClient 클래스 (나쁜 명명 어쩌면 것 같아요?) - IscsWireProtocol WireProtocol 같은 속성을 가진 - 인터페이스에서이 작업을 수행 할 수 있습니까? 개체를 만들 수 있습니다 - 어떤 serialize 및 deserialize 때문에 나중에 필요할 연결 속성이 있습니다. 나는 무엇을하고 싶은가에 대한 실행 가능한 테스트를 가지고있다. – VisualBean

+0

그것의 인터페이스는 – VisualBean

답변

0

나는 protobuf-net을 시도 할 것이다. 여기를보세요 : http://code.google.com/p/protobuf-net/

견적을 웹 사이트에서 :

프로토콜 버퍼가 데이터 통신의 많은 구글이 사용하는 바이너리 직렬화 형식의 이름입니다. 수 있도록 설계되었습니다 : 크기

  • 작은 - (XML보다 훨씬 작은) 효율적인 데이터 저장
  • 싼 과정 - 모두 클라이언트와 서버에서
  • 플랫폼에 독립적 - 서로 다른 프로그래밍 구조
  • 을 사이에 휴대용
  • 확장은 - 오래된 메시지
+0

나는 이것도 들여다 보았다. 그러나 non custom class를 사용하는 것이 더 쉬울 것 같지 않다. – VisualBean

+0

그러나 당신은 당신의 손에 소스 코드가없는 typoes를위한 serializer를 추가 할 수있다. 예를 들면 : RuntimeTypeModel .Default.Add (typeof (Point), false) .Add ("X", "Y"); ' –

+0

형식을 계약으로 표시 할 수 없습니까? - 이럴 필요 없어? – VisualBean

관련 문제