症状: 次のタイプのシリアライザーが定義されていません: 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>();
Array を RuntimeTypeModel に登録する必要がありますか?
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;}
は、ラッパーのリストとの間の変換の 1 つになります。もっと簡単な方法はありますか?