如何使用 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/