【发布时间】:2012-01-24 02:48:54
【问题描述】:
我有一个非常简单的类,我正在尝试序列化:
[ProtoContract]
public class SettingStore {
public event EventHandler ContentsChanged;
[ProtoMember(1)]
private Dictionary<string, string> _StringVals = new Dictionary<string, string>(50);
[ProtoMember(2)]
private Dictionary<string, int> _IntVals = new Dictionary<string, int>(50);
public SettingStore() {
}
//Bunch of accessors omited
public static SettingStore DeSerialize(Stream data) {
return Serializer.Deserialize<SettingStore>(data);
}
public void Serialize(Stream Target) {
Serializer.Serialize<SettingStore>(Target, this);
}
}
在序列化时,我得到一个带有以下堆栈跟踪的 FieldAccessException:
在 System.Reflection.RuntimeFieldInfo.GetValue(Object obj) 在 ProtoBuf.Serializers.FieldDecorator.Write(对象值,ProtoWriter dest) 在 ProtoBuf.Serializers.TypeSerializer.Write(对象值,ProtoWriter dest) 在 ProtoBuf.Meta.RuntimeTypeModel.Serialize(Int32 键,对象值,ProtoWriter 目标) 在 ProtoBuf.Meta.TypeModel.SerializeCore(ProtoWriter 编写器,对象值) 在 ProtoBuf.Meta.TypeModel.Serialize(流目标,对象值,SerializationContext 上下文) 在 ProtoBuf.Meta.TypeModel.Serialize(流目标,对象值) 在 ProtoBuf.Serializer.Serialize[T](Stream destination, SettingStore 实例)
在反序列化时,我得到了等价的异常。
如果我公开这两个字典,一切正常,但完全破坏了我的对象结构。我正在使用 v2 r431 发行版。相同的代码在 .NET 4.0 中也能正常工作。
谢谢!
【问题讨论】:
标签: c# windows-phone-7 protocol-buffers protobuf-net