【发布时间】:2013-05-26 03:58:54
【问题描述】:
我已经能够毫无问题地序列化可为空的双精度数,并且可以序列化可为空的其他类型的列表,但不能序列化可为空的双精度数的列表。
如果我这样做:
List<double?> aList = new List<double?>();
aList.Add(0.1);
aList.Add(null);
Serializer.Serialize(ms, aList);
我收到此错误:
System.NullReferenceException:对象引用未设置为对象的实例。 在 ProtoBuf.Meta.TypeModel.TrySerializeAuxiliaryType(ProtoWriter writer, Type type, DataFormat format, Int32 tag, Object value, Boolean isInsideList) in c:\Dev\protobuf-net\protobuf-net\Meta\TypeModel.cs:line 169 在 c:\Dev\protobuf-net\protobuf-net\Meta\TypeModel.cs:line 188 中的 ProtoBuf.Meta.TypeModel.SerializeCore(ProtoWriter writer, Object value) 在 c:\Dev\protobuf-net\protobuf-net\Meta\TypeModel.cs:line 217 中的 ProtoBuf.Meta.TypeModel.Serialize(Stream dest, Object value, SerializationContext context) 在 c:\Dev\protobuf-net\protobuf-net\Meta\TypeModel.cs:line 201 中的 ProtoBuf.Meta.TypeModel.Serialize(Stream dest, Object value) 在 ProtoBuf.Serializer.Serialize[T](Stream destination, T instance) in c:\Dev\protobuf-net\protobuf-net\Serializer.cs:line 87
这应该有效吗?我是不是做错了什么?
【问题讨论】:
-
我用
List<int?>、List<double?>和List<string>一起进行了测试 - 它们在这里的行为都相同 -
我将重新运行我的测试并返回
-
我得到相同的行为将所有可为空的类型。我认为以前虽然我有可空类型,但只有可空双精度才能具有实际的空值。为错误信息道歉。本
标签: protobuf-net