2011-11-03 2 views
2

protobuf .net을 사용하여 기본 클래스에서 상속 된 클래스의 인스턴스를 serialize하려고합니다. \ deserialize serialize 할 때 "예상되지 형식"에 대한 예외가 나타납니다. 이미 읽었던 것처럼 기본 형식에 protoinclude를 추가하여 문제를 해결했습니다. 하지만 내 문제는 내가 기본을 파생 할 유형을 알지 못하기 때문에 속성을 추가 할 수 없다는 것입니다. 이미 읽은 것처럼 V2는 상속을 설명하기 위해 형식 모델을 정의하는 방법을 제공 할 것임을 이해합니다. 그래서 내 질문 :상속 및 알려진 형식 문제

  1. V2 릴리스를 사용할 수 있습니까?
  2. 이 문제를 해결할 수있는 임시 해결책이 있습니까? 사전에

감사합니다,

답변

0

V2는 (- 모두가 머리 뒤에 조금있다 nuget이 IIRC 앞으로 몇 회전 속도를 올린다이다) nuget에서 모두 사용할 수 있으며 구글 코드입니다. 아직 다시 구현되지 않은 v1 기능이 몇 가지 있지만 대부분의 경우이를 알 수 없습니다. 그들은 당연히 다시 추가 될 것입니다.

다시 문제가 있습니다. 그러나 MetaType.AddSubType을 통해 사용할 수 있습니다. 그러나 이러한 접근 방식을 사용하려면 향후 하위 유형별로 동일한 int 식별자를 재생할 수 있어야합니다. 이는 중요한 키이므로 변경해서는 안됩니다.

RuntimeTypeModel.Default[typeof(SomeType)].AddSubType(7, subType); 

"개체"속성에서 사용할 수있는 DynamicType도 있습니다. 그러나 상속 기반 모델에서는 약간의 꼬임이 있습니다. 나는 그것을 당분간 피할 것이다 (이것은 곧 교정 될 것이다).

+0

하이 마크, 답변 해 주셔서 감사합니다.하지만 답변을 완전히 이해하고 있는지 잘 모르겠습니다. 1. 답안에서 제공 한 샘플은 v1 최신 릴리즈 ("protobuf-net-VS10.msi"? )에서 구할 수 있습니까? "nuget은 IIRC를 약간 뒤돌아 보면 무엇입니까? 문제는 미안하지만, nuget과 iirc는 무엇인가? 다운로드 할 V2의 최종 버전이 있다면이 점을 이해하지 못했습니까? google 코드에서 다운로드 용 베타 버전 만 보았습니다 ("protobuf-net v2 beta r450.zip "). 시도했지만 구현되지 않은 예외를 throw하는 메서드가 있습니다. 감사합니다. Gil –

+0

@Gil"nuget "은 VS2010 내부의 라이브러리 다운로드 도구입니다. 수천 개의 라이브러리에 액세스/업데이트 할 수 있습니다. (예 : protobuf-net)을 IDE에서 쉽게 구현할 수 있습니다. 기능 제안 등 전체 큐가있는 한 "최종"v2는 없습니다. "베타"표시는 간단합니다 '.GetProto '(모델에서 .proto 스키마를 추출하기 위해)과 같이 드물게 사용되는 * v1 기능 때문에 - 이것들은 다시 추가되지만 아직 다시 작성되지는 않았습니다 **. 따라서 필요한 경우 v1이 현재 더 나은 옵션 일 수 있습니다. 모든 모든 기능이 제공됩니다. –