最近、私たちのプロジェクトの1つでprotobuf-netが2.0.0.668から2.3.2にアップグレードされました。 Nullable 10進数をモデルに追加できません
タイプDictionary<long, decimal?>
のプロパティをシリアル化、いるProtobufネット 例外:
ProtoBuf.ProtoExceptionを:「この種類のデータは、作り付けの振る舞いがあり、このようにモデルに追加することはできません:システム。 Nullable`1 [[System.Decimalの、mscorlib、バージョン= 4.0.0.0、文化=中立、なPublicKeyToken = b77a5c561934e089]]
私は、これは、これは持っているタイプであるという事実に関係していることをオンラインで読みますprotobuf-netのデフォルトシリアライザ。しかし、これはバージョン2.0.0.668で動作し、小数点である他のプロパティは何の問題も生じません。私の場合、どうすればこの問題を解決できますか?
[ProtoContract]
public class MyObject
{
[ProtoMember(1)]
public MyType TypeInstance { get; set; }
[ProtoMember(2)]
public Dictionary<long, decimal?> MyDictionary { get; set; }
[ProtoMember(3)]
public decimal Total { get; set; }
}
public class OtherClass
{
public static byte[] ToProto<T>(T input)
{
byte[] bytResults;
using (var stream = new MemoryStream())
{
Serializer.Serialize(stream, input);
bytResults = stream.ToArray();
}
return bytResults;
}
}
編集:別の質問で提案された回答は適用されません。この質問は議定書バッファーの小数点以下のものではなく、新しいバージョンのprotobuf-netの無効な小数点以下の桁数について書かれています。
に固定されていることが唯一の理由のシリアル化がある場合辞書に10進数の値がないキーを格納しないのはなぜですか? – fredrik
@fredrik - 'decimal'はすでにサポートされています(その答えは2008年であり、非常に古くなっています)。それはここでは問題ではありません。問題は 'Nullable'です。 –
@JustinNiessner kay、投票が取り下げられました。 – fredrik