我有一个 .NET 类型,它既不是 ProtoContract 也不是 DataContract。此外,并非所有状态都需要进行原型(prototype)序列化。
我可以为它定义一个 .proto 文件,但同时使用某种序列化程序来序列化它,就好像它属于 ProtoContract 一样吗?

谢谢。

最佳答案

作为第三种选择,可以使用 [XmlType][XmlElement(Order=n)] ......但我认为这不是你的意思;p

在“v2”中,这确实是可能的。您不需要定义 .proto - 您可以简单地告诉它在运行时要做什么,例如:

var model = TypeModel.Create();
model.Add(typeof(SomeType)).Add("Foo", "Bar", "Blip");

现在将 model 存储在某处(并重新使用它),并使用 model.Serialize(...)model.Deserialize(...) 。以上配置SomeType来序列化.Foo(作为字段1)、.Bar(作为字段2)和.Blip(作为字段3)。当然,还有更多方法可以实现更细粒度的控制。

它将生成(首先需要)一个序列化器(通过 IL 发射,非常快),它可以按预期与您的类型一起使用。

有一个可下载的“v2”dll,但它需要更新——我在过去几周里做了很多修复。我将在今天晚些时候尝试刷新此 dll,或者您可以从代码构建。

关于protobuf-net - 是否可以同时使用 protobuf-net Serializer 和相应的 *.proto 文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6058645/

10-12 17:34
查看更多