C#Protobuf:如何反序列化基于TextFormat的未知类型的字符串?

时间:2017-12-06 11:32:20

标签: c# protocol-buffers

我是Protobuf的新手,希望这不是一个愚蠢的问题。我认为ProtoBuf的TextFormat中有一个字符串,如:

model.messages.Request { RequestNum: 123 Sender: "Test" Content { value: 45678 valuescale: 1 } }

真正的字符串是更广泛的关注你有更多的属性等。 我的目标是在C#中反序列化这个字符串,例如类似(伪代码)

var obj = DeserializeThisSomehow("model.messages.Request { RequestNum: 123 Sender: \"Test\" Content { value: 45678 valuescale: 1 } }");

var numProperty = ((dynamic)obj).RequestNum;
// or maybe something like ...
var numProperty = obj.Properties["RequestNum"];

这有可能吗?我的问题是那个

  1. 输入字符串似乎在TextFormat中,我还没有在Protobuf的C#API中找到任何可以让你从该格式反序列化的东西
  2. 我没有关于生成的对象的任何类型信息,所以我事先不知道它将具有哪些属性/无法为其编写任何特定的格式规范(*)
  3. 有没有办法做到这一点?

    (*)至于问题编号。 2 - 但我有一些反编译的java代码,我相信是通过在原始.proto文件上运行protoc生成的java代码。除此之外,还包括一串描述符数据,如

    "\n\031RequestMessage.proto\022\024...........
    

    也许这可以用来反向设计格式/ .proto规范?但不确定如何,我只发现了这种方法:Restoring .proto file from descriptor string. Possible?但似乎无法应用这种方法(例如,protobuf' C#api似乎没有任何FileDescriptorProto类型)

    由于

0 个答案:

没有答案