【发布时间】:2014-09-01 00:20:40
【问题描述】:
我刚刚开始使用 ProtoBuf-Net 并拥有以下对象:
[DataContract]
public class Statistics
{
[DataMember(Order = 1)]
public DateTime DateTimeAsUtc { get; set; }
[DataMember(Order = 2)]
public IEnumerable<StatisticsRow> TopHashTags { get; set; }
[DataMember(Order = 3)]
public IEnumerable<StatisticsRow> TopWords { get; set; }
}
[DataContract]
public class StatisticsRow
{
[DataMember(Order = 1)]
public string Key { get; set; }
[DataMember(Order = 2)]
public int Count { get; set; }
}
// Serialize then DeSerialize
using (var stream = new MemoryStream())
{
Serializer.Serialize(stream, stats);
stream.Seek(0, SeekOrigin.Begin);
var deserialized = Serializer.Deserialize<Statistics>(stream);
}
当我序列化并尝试反序列化对象时,我得到了所有其他属性的 DateTimeAsUtc 和 null 的默认值。关于我做错了什么有什么想法吗?
请注意,我尝试将 DataContract 和 DataMember 替换为 ProtoContract 和 ProtoMember 无济于事。
该问题仅在 Release 模式下发生。
[更新]
问题原来是由于存在[MyConsoleApp].vshost.exe 显然是a special version of the executable to aid debugging 我认为会在Rebuild 之后重新生成(显然不是)所以解决方案是手动删除它现在一切正常:-)
无论如何,我都会接受 Marc 的回答,因为他很友好地跟进并很快回复。
【问题讨论】:
-
问题不在于日期时间,如果我删除日期时间,其他属性仍然为空。
-
输入数据是什么?所以我可以复制?
-
嗨 Marc,tnx 跟进此事,我将在今晚(伦敦时间)晚些时候更新 q,因为我将在一天中的大部分时间都在工作。很棒的图书馆顺便说一句。
标签: c# serialization deserialization protobuf-net