Protobuf- net имеет мнения о руководствах. Мнения, которые были подделаны в глубине времени, и о которых я сейчас сожалею, но которые трудно вернуть, не сломив людей. Если бы я писал это сегодня, оглядываясь назад, то да: он, вероятно, просто сериализовался бы как строка. Но: это не то, что он ожидает сегодня!
Честно говоря, я бы взломал его с помощью свойства тени. Таким образом, вместо
[ProtoMember(42)]
public Guid Foo {get;set;}
Вы можете использовать:
public Guid Foo {get;set;}
[ProtoMember(42)]
private string FooSerialized {
get => Foo.ToString(); // your choice of formatting
set => Foo = Guid.Parse(value);
}