c# - 在 Protobuf.NET 中序列化 List<object> (其中对象支持原语)?

标签 c# protobuf-net

如何使用 protobuf-net 序列化这样的对象:

public class MyObject{
   public string Key {get; set;}
   public List<Object> Values {get; set;}
}

当我尝试使用 TypeModel protobuf-net 对此进行序列化时,抛出一个错误,指出它不知道如何序列化 System.Object。现在我知道 Values 只会包含基元(int、string、float、DateTime 等)。那么如何让 protobuf-net 知道这一点呢?

最佳答案

在任何意义上,这在纯 ProtoBuf 中都是不可行的。 ProtoBuf 是强类型的,但消息中不包含类型信息;类型信息总是在外部指定。因此有两个“好的”解决方案;即,解决方案很容易被 Protobuf 实现而不是 Protobuf-net 解释(你可能关心也可能不关心,但 marc 似乎确实关心)。

1:替换List<object>List<PrimitiveType>其中 PrimitiveType包含与所有 12 种左右的原始类型相对应的可选字段(取决于您对“原始类型”的定义。),并且您确保每个实例只填写其中一个。

2:替换List<object>List<int> 的组合, List<double> , List<string>等等

关于c# - 在 Protobuf.NET 中序列化 List<object> (其中对象支持原语)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507443/

相关文章:

protocol-buffers - 在 protobuf3 中发送显式零

design-patterns - 使用 protobuf 进行部分反序列化

object - Protobuf-net 动态类型数组

c# - "Access to the path ... is denied"(.NET C#)

c# - 我可以选择检索 protobuf-net 或 NHibernate 中的对象字段吗?

c# - 在 protobuf-net 中继承序列化

c# - 在 ASP.NET 中如何使 OnClick 在 OnClientClick 之后执行?

c# - 如何将默认命名空间添加到加载的 XmlDocument 以便验证 "works"

c# - 在 wpf 中从子控件中设置属性

c# - 如何卸载使用 RunAndCollect 创建的动态程序集?