实体类中如果存在事件,则在序列化时会报错:
程序集“WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”中的类型“System.ComponentModel.PropertyChangedEventManager”未标记为可序列化。
如:
[Serializable]
class CurveOperation : INotifyPropertyChanged
{
private int m_timeSpan;
/// <summary>
/// 时长
/// </summary>
public int TimeSpan
{
get { return m_timeSpan; }
set
{
m_timeSpan = value;
if (PropertyChanged != null)
{
this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("TimeSpan"));
}
}
}
private int m_range;
/// <summary>
/// 量程范围
/// </summary>
public int Range
{
get { return m_range; }
set
{
m_range = value;
if (PropertyChanged != null)
{
this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Range"));
}
}
}
public CurveOperation()
{
m_timeSpan = 1000;
m_range = 10;
}
//[field: NonSerialized]
public event PropertyChangedEventHandler PropertyChanged;
}解决方案:如上所示的[field: NonSerialized]
只要把斜杠去掉就可以喽。序列化过程中就不需要存储事件信息了。

1885

被折叠的 条评论
为什么被折叠?



