WPF MVVM Model类序列化
今天写代码,碰到如下问题:因为采用了MVVM,需要将Model类序列化,总是出错..
写了一个可序列化的类,此类继承INotifyPropertyChanged接口,需要实现事件:
public event PropertyChangedEventHandler PropertyChanged;
编译通过,但在序列化的时候,报错“程序集“WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”中的类型“System.ComponentModel.PropertyChangedEventManager”未标记为可序列化。”,猜测是event PropertyChanged的问题,可怎样才能不让他序列化呢,加了 [NonSerialized()]这个编译无法通过。后来在网上看到,对于事件,[NonSerialized()]是错误的写法,正确的写法应该是[field:NonSerializedAttribute()] ,即:
[field:NonSerializedAttribute()]
public event PropertyChangedEventHandler PropertyChanged;
原因:事件不是字段,因此需要多一步,将它设置为字段。
参考msdn的帮助
http://msdn.microsoft.com/zh-cn/library/system.nonserializedattribute