MessageParser.ParseFrom - GUID 问题

MessageParser.ParseFrom - GUID issue

我生成了原型文件 "Tutotial.Person",其中包含一个名为 ID 类型 GUID 的字段。 我在 C# 项目中有一个名为 Person class 的 DTO,我想从 person 对象填充 Tutorial.Person class。一切看起来都不错,但 GUID。解析后的 Guid 值看起来像这样“\t{}]2�p�D\u0011�O[X�]o”。 我对这个原型很陌生(你可能会从下面我的天真例子中注意到)。你能告诉我需要做什么才能获得正确的 GUID 吗?

      static void Main(string[] args) {
            var person = new Person {
                Name = "Fred",
                Id = Guid.NewGuid()
            };

            var parser = new MessageParser<Tutorial.Person>(() => new Tutorial.Person());
            using (var stream = new MemoryStream())
            {
                Serializer.Serialize(stream, person);

                var d = parser.ParseFrom(stream.ToArray());
            }  
        }

原型文件:

syntax = "proto3";
package tutorial;


message Person {
  string name = 1;
  string id = 2;
}

Protobuf 没有用于存储 guid 的众所周知的类型。 Protobuf-net 组成了一个布局,但它不是扁平字符串。它比那更复杂,但细节没有用。

简短版本:如果你想在平台/库之间往返:坚持使用具有原生 protobuf 表示的类型。在这种情况下,string 将是一个合理的选择,而不是 Guid.