protobuf-net : 길이 접두사가있는 nullable 열거 형 직렬화 및 역 직렬화시 ProtoException

헤만 트

이 코드는 문제를 재현합니다.

Type Resolver(int fieldNumber)
{
    return typeof(ConsoleColor?);
}

var stream = new MemoryStream();
ConsoleColor? obj = ConsoleColor.Green;
Serializer.NonGeneric.SerializeWithLengthPrefix(stream, obj, PrefixStyle.Base128, 1);

stream.Position = 0;
Serializer.NonGeneric.TryDeserializeWithLengthPrefix(stream, PrefixStyle.Base128, Resolver, out var dd);
//EXCEPTION!!!

단순히 nullable 열거 형 값을 직렬화하고 있습니다. 그러나 역 직렬화를 시도하면 예외가 발생합니다.

ProtoBuf.ProtoException : 유효하지 않은 와이어 유형; 이것은 일반적으로 길이를 자르거나 설정하지 않고 파일을 덮어 썼음을 의미합니다. https://stackoverflow.com/q/2152978/23354' 참조

내가 도대체 ​​뭘 잘못하고있는 겁니까? 문제를 해결하거나 해결할 수있는 방법이 있습니까? protobuf-net 라이브러리 2.4.6 버전을 사용하고 있습니다. (.Net Framework 4.0에 붙어 있기 때문에 3.x로 이동할 수 없습니다).

마크 그 라벨

당신이 통과 할 때 Nullable<T>취하는 API로 object, 그것입니다 박스 와의 복싱 규칙은 Nullable<T>특별하다 : 그것은 상자에 정기적으로 null, 또는의 상자 T가 아닌 상자 T?; 즉, object은 nullable 값 유형을 포함 하지 않습니다 . 이 때문에 라이브러리의 관점에서 a ConsoleColor가 아닌 을 보냈습니다 ConsoleColor?.

Type Resolver(int fieldNumber)
{
    return typeof(ConsoleColor);
}

참고로 리졸버 API는 매우 구체적이고 틈새 시장이며 일반적으로 더 나은 방법이 있습니다. 달성 하려는 목표 를 말씀해 주시면 더 많은 안내를 드릴 수 있습니다.

(나는이 있는지 여부를 생각하기 위해 노력하고있어 지금까지 리졸버가 의미있게를 반환 할 수있는 시나리오 typeof(Nullable<T>)일부는 T- 우리가 할 수 아마도 단지 널 (NULL) 자체의 포장을 라이브러리가, 또는 더 의미있는 메시지를 올릴)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

protobuf - 그물 직렬화 / 날짜 시간 및 가이 드 유형을 역 직렬화

분류에서Dev

Jackson의 다형성 직렬화 / 역 직렬화 및 사용자 지정 직렬화 / 역 직렬화

분류에서Dev

Jackson : 열거 형 값을 정수로 직렬화 및 역 직렬화

분류에서Dev

Protobuf 역 직렬화

분류에서Dev

사전을 이진으로 직렬화 및 역 직렬화

분류에서Dev

Protobuf-net 문자열 필드를 C # GUID로 역 직렬화

분류에서Dev

자바 열거 형 필드 직렬화 / 역 직렬화

분류에서Dev

열거 형 역 직렬화 C #

분류에서Dev

protobuf-net으로 사전 역 직렬화

분류에서Dev

JSON.NET을 사용하여 dictionary <string, object> 역 직렬화 및 직렬화

분류에서Dev

Newtonsoft.Json을 사용한 열거 형 역 직렬화

분류에서Dev

유형이있는 JSON.NET을 통해 들쭉날쭉 한 배열 역 직렬화

분류에서Dev

protobuf-net에서 주어진 유형을 직렬화 / 역 직렬화 할 때 사용할 사용자 정의 메소드를 지정하는 방법이 있습니까?

분류에서Dev

루트 개체 및 1 배열 ASP.NET MVC없이 json 역 직렬화

분류에서Dev

Firestore DB를 사용한 Flutter 데이터 직렬화 및 역 직렬화

분류에서Dev

j2objc-열거 형 역 직렬화시 예외

분류에서Dev

공용 열거 형을 직렬화 / 역 직렬화하는 쉬운 방법은 무엇입니까?

분류에서Dev

Json.net JSON 파일을 C # 사전 유형으로 직접 역 직렬화 하시겠습니까?

분류에서Dev

케이스가 일치하지 않을 때 열거 형을 어떻게 역 직렬화 할 수 있습니까?

분류에서Dev

파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

분류에서Dev

XmlRoot 요소가없는 XML 직렬화 및 역 직렬화

분류에서Dev

열거 형 값이있는 Scala 직렬화 예외

분류에서Dev

Java에서 인터페이스 직렬화 및 역 직렬화

분류에서Dev

(수동) 이진 검색 트리 직렬화 및 역 직렬화

분류에서Dev

JSON 문자열을 열거 형으로 역 직렬화하는 방법

분류에서Dev

잭슨 사용자 정의 직렬화 및 역 직렬화

분류에서Dev

Jackson을 사용하여 Lambda 직렬화 및 역 직렬화

분류에서Dev

ServiceStack은 객체로 사전 직렬화 및 역 직렬화

분류에서Dev

특성없는 C # JSON 직렬화 및 역 직렬화

Related 관련 기사

  1. 1

    protobuf - 그물 직렬화 / 날짜 시간 및 가이 드 유형을 역 직렬화

  2. 2

    Jackson의 다형성 직렬화 / 역 직렬화 및 사용자 지정 직렬화 / 역 직렬화

  3. 3

    Jackson : 열거 형 값을 정수로 직렬화 및 역 직렬화

  4. 4

    Protobuf 역 직렬화

  5. 5

    사전을 이진으로 직렬화 및 역 직렬화

  6. 6

    Protobuf-net 문자열 필드를 C # GUID로 역 직렬화

  7. 7

    자바 열거 형 필드 직렬화 / 역 직렬화

  8. 8

    열거 형 역 직렬화 C #

  9. 9

    protobuf-net으로 사전 역 직렬화

  10. 10

    JSON.NET을 사용하여 dictionary <string, object> 역 직렬화 및 직렬화

  11. 11

    Newtonsoft.Json을 사용한 열거 형 역 직렬화

  12. 12

    유형이있는 JSON.NET을 통해 들쭉날쭉 한 배열 역 직렬화

  13. 13

    protobuf-net에서 주어진 유형을 직렬화 / 역 직렬화 할 때 사용할 사용자 정의 메소드를 지정하는 방법이 있습니까?

  14. 14

    루트 개체 및 1 배열 ASP.NET MVC없이 json 역 직렬화

  15. 15

    Firestore DB를 사용한 Flutter 데이터 직렬화 및 역 직렬화

  16. 16

    j2objc-열거 형 역 직렬화시 예외

  17. 17

    공용 열거 형을 직렬화 / 역 직렬화하는 쉬운 방법은 무엇입니까?

  18. 18

    Json.net JSON 파일을 C # 사전 유형으로 직접 역 직렬화 하시겠습니까?

  19. 19

    케이스가 일치하지 않을 때 열거 형을 어떻게 역 직렬화 할 수 있습니까?

  20. 20

    파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

  21. 21

    XmlRoot 요소가없는 XML 직렬화 및 역 직렬화

  22. 22

    열거 형 값이있는 Scala 직렬화 예외

  23. 23

    Java에서 인터페이스 직렬화 및 역 직렬화

  24. 24

    (수동) 이진 검색 트리 직렬화 및 역 직렬화

  25. 25

    JSON 문자열을 열거 형으로 역 직렬화하는 방법

  26. 26

    잭슨 사용자 정의 직렬화 및 역 직렬화

  27. 27

    Jackson을 사용하여 Lambda 직렬화 및 역 직렬화

  28. 28

    ServiceStack은 객체로 사전 직렬화 및 역 직렬화

  29. 29

    특성없는 C # JSON 직렬화 및 역 직렬화

뜨겁다태그

보관