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
.
我生成了原型文件 "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
.