症状:没有为类型定义序列化程序:System.Array
由于所有 C# 数组都继承自 Array 类,我认为这在 ProtoBuf-net 中是有效的
[ProtoMember(1)]
public Array SomeKindOfArray = new int[]{1,2,3,4,5};
[ProtoMember(2)]
public List<Array> SomeKindOfList = new List<Array>();
我应该向 RuntimeTypeModel 注册 Array 吗?
m.Add(typeof (Array), true); // does not seem to help
尝试:
new int[]{1,2,3,4} // works
(object)new int[] { 1, 2, 3, 4 } // does not work
(Array)new int[] { 1, 2, 3, 4 } // does not work
另一种可能的解决方案(现在找不到 SO url):
有一个基类型类项目的列表。
包装每种类型。例如
class TheBase{}
class ArrayOfInt { public int[] value;}
然后将成为转换为包装器列表和从包装器列表转换的一种。有没有更简单的前进方式?