我有我試圖序列化一個非常簡單的類:protobuf網在WP7拋出FieldAccessExceptions
[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:
在ProtoBuf.Meta的ProtoBuf.Serializers.TypeSerializer.Write(對象值,ProtoWriter dest) 處的ProtoBuf.Serializers.FieldDecorator.Write(對象值,ProtoWriter dest) 處的System.Reflection.RuntimeFieldInfo.GetValue(Object obj) 。 RuntimeType Model.Serialize(Int32 key,Object value,ProtoWriter dest) at ProtoBuf.Meta.TypeModel.SerializeCore(ProtoWriter writer,Object value) at ProtoBuf.Meta.TypeModel.Serialize(Stream dest,Object value,SerializationContext context) at ProtoBuf.Meta.TypeModel.Serialize(流DEST,對象的值) 在ProtoBuf.Serializer.Serialize [T](流的目的,SettingStore實例)
在反序列化,我得到了equivelant例外。
如果我公開兩個字典,一切正常,但完全打破了我的對象結構。我正在使用v2 r431發行版。在.NET 4.0中,相同的確切代碼工作得很好。
謝謝!
啊,當然這是總的感覺。但是,這似乎打破了protobuf-net的屬性驅動模式創建。我想這要保留封裝,我會做一些簡單的DTO,然後序列化/反序列化。 – tempy