c#使用.proto文件反序列化为动态对象

时间:2013-06-22 02:09:47

标签: c# protobuf-net

是否有任何使用现有.proto文件(从ProtoBuf.Serializer.GetProto();生成)和原始字节反序列化为动态对象或普通对象的示例。

让我强调这是一个问题,我正在努力改进我的内存缓存调试工具 - 目标是能够在不必使用应用程序的情况下使人类可读的任何对象(因为我会将每个类型的.proto存储在缓存中,因为它在序列化时存在。)

此解决方案中没有性能注意事项,所有选项都在桌面上。如果有一种方法可以在protobuf-net中执行此操作,我会很高兴,但如果我需要使用代码生成/替代库,那就没问题了。我不确定最谨慎的做法是什么。

1 个答案:

答案 0 :(得分:1)

Protobuf-net本身没有任何.proto解析工具,但谷歌代码下载(但不是NuGet下载)中包含的一个配套工具是“ProtoGen”,它对此有一些支持。它可以被引用(它只是一个.net程序集)并被使用 - 实际上它是如何运行它的集成测试的。该工具用作c#代码生成器;挂钩到CSharpCodeProvider,你有一个可行的,如果是基本的机制来处理内存中的数据。您不希望以这种方式在单个app-domain中处理大量的.proto,但运行时不擅于卸载程序集。

要做你想做的事,最好使用专门为那个场景设计的工具。这转化为“有人想要这种情况,他们花时间去调查,设计,实施,测试和支持它。”