C#学习教程:序列化实现INotifyPropertyChanged的??类的实例时出现SerializationException序列化就好了,有一个gettingSerializationException。这些字段是:privatereadonlyObservableCollectionValues;异常是程序集WindowsBase中的类型System.ComponentModel.PropertyChangedEventManager,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35未标记为可序列化。我的目标是Framework3.5。我发现一些建议,它可能是可观察集合序列化的问题,但应该在3.5sp1中修复。不确定如何解决这个问题,有什么想法吗?谢谢。CellVM类:[Serializable]publicclassCellVM:ANotifyPropertyChanged{publicCellmodel;publicintX{get{返回model.X;}设置{model.X=值;OnPropertyChanged("X");}}publicintY{get{returnmodel.Y;}设置{模型。Y=值;OnPropertyChanged("Y");}}publicstringValue{get{returnmodel.ActualValue;}设置{model.ActualValue=value;OnPropertyChanged("值");}}[非序列化]privatebool_isActive;publicboolIsActive{get{返回_isActive;}设置{_isActive=值;OnPropertyChanged("IsActive");OnPropertyChanged("BackgroundBrush");OnPropertyChanged("HighlightBrush");}}publicboolIsReadOnly{get{if(model.InitialValue.Equals(model.RightValue)){返回真;}返回假;}}publicboolIsHighLighted{得到;放;}私人布尔_isInvalid;publicboolIsInvalid{get{返回_isInvalid;}设置{_isInvalid=值;OnPropertyChanged("无效");OnPropertyChanged("BackgroundBrush");}}私人布尔_isValueMode;publicboolIsValueMode{get{返回_isValueMode;}设置{_isValueMode=值;OnPropertyChanged("IsValueMode");OnPropertyChanged("ValueVisibility");OnPropertyChanged("可能性可见性");}}[非序列化]privateFontWeight_valueFontWeight;publicFontWeightValueFontWeight{get{return_valueFontWeight;}设置{_valueFontWeight=值;OnPropertyChanged("ValueFontWeight");}}[非序列化]privateBrush_valueColor;publicBrushValueColor{get{if(_valueColor==null){returnnewSolidColorBrush(Colors.Black);}返回值颜色;}设置{_valueColor=值;OnPropertyChanged("ValueColor");}}publicVisibilityValueVisibility{get{if(IsValueMode){returnVisibility.Visible;}返回Visibility.Hidden;}}publicVisibilityPossibilityVisibility{get{if(!IsValueMode){returnVisibility.Visible;}返回Visibility.Hidden;}}私有布尔_isCheckInvalid;publicboolIsCheckInvalid{得到{返回_isCheckInvalid;}设置{_isCheckInvalid=值;OnPropertyChanged("IsCheckInvalid");OnPropertyChanged("HighlightBrush");}}publicBrushHighlightBrush{get{if(IsActive&&IsReadOnly){returnColorManager.CellActive;}if(IsCheckInvalid){ColorAnimationanimation=newColorAnimation{From=Colors.Firebrick,To=Colors.WhiteSmoke,Duration=newDuration(TimeSpan.FromSeconds(1)),AutoReverse=true};SolidColorBrush画笔=newSolidColorBrush(Colors.Firebrick);animation.RepeatBehavior=RepeatBehavior.Forever;animation.AccelerationRatio=0.5;brush.BeginAnimation(SolidColorBrush.ColorProperty,动画);回刷;}返回新的SolidColorBrush(Colors.Transparent);}}publicBrushBackgroundBrush{get{if(IsActive){if(!IsReadOnly){returnColorManager.CellActive;}}if(IsInvalid){返回ColorManager.CellInvalid;}if(IsHighLighted){返回ColorManager.CellHighlighted;}返回新的SolidColorBrush(颜色s.怀特);}}[非序列化]privateBrush_backgroundAnimationBrush;publicBrushBackgroundAnimationBrush{get{return_backgroundAnimationBrush;}设置{_backgroundAnimationBrush=值;OnPropertyChanged("BackgroundAnimationBrush");}}publicBrushPossibilitiesBrush{get{returnnewSolidColorBrush(PossibilitiesColor);}}私有颜色_possibilitiesColor;公共颜色PossibilitiesColor{get{if(_possibilitiesColor==null){returnnewColour(Colors.Black);}返回_possibilitiesColor;}设置{_possibilitiesColor=值;OnPropertyChanged("可能性颜色");OnPropertyChanged("PossibilitiesBrush");}}publicObservableCollectionPossibilities{get{returnmodel.Possibilities;}设置{model.Possibilities=value;OnPropertyChanged("可能性");OnPropertyChanged("可能性可见性");}}私有字符串_toolTip;publicstringToolTip{get{return_toolTip;}设置{_toolTip=值;OnPropertyChanged("工具提示");}}publicCellVM(Cellmodel,boolisHighlighted){this.model=model;IsValueMode=true;IsHighLighted=isHighlighted;}publicvoidsignalError(stringmessage){ToolTip=message;无效=真;}publicvoidresetError(){if(IsCheckInvalid){返回;}工具提示=null;无效=假;}publicvoidAnimateError(){ColorAnimationanimation=newColorAnimation{From=Colors.Firebrick,To=Colors.Transparent,Duration=newDuration(TimeSpan.FromSeconds(1.5)),AutoReverse=false};animation.Completed+=newEventHandler(animation_Completed);SolidColorBrush画笔=newSolidColorBrush(Colors.Transparent);animation.AccelerationRatio=0.5;BackgroundAnimationBrush=画笔;brush.BeginAnimation(SolidColorBrush.ColorProperty,动画);}publicvoidAnimateHint(){ColorAnimationanimation=newColorAnimation{From=Colors.DarkGreen,To=Colors.Transparent,Duration=newDuration(TimeSpan.FromSeconds(1.5)),AutoReverse=false};animation.Completed+=newEventHandler(animation_Completed);SolidColorBrush画笔=newSolidColorBrush(Colors.Transparent);animation.AccelerationRatio=0.5;BackgroundAnimationBrush=画笔;brush.BeginAnimation(SolidColorBrush.ColorProperty,Companimation_let);(objectsender,EventArgse){BackgroundAnimationBrush=null;}}CellVMSuperClass(祖先):[Serializable]publicabstractclassANotifyPropertyChanged:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropertyChanged;protectedvirtualvoidOnPropertyChanged(stringpropertyName){PropertyChangedEventHandlerhandler=this.PropertyChanged;if(handler!=null){vare=newPropertyChangedEventArgs(propertyName);处理程序(这个,e);}}}尝试通过[NonSerialized]属性来标记事件PropertyChanged下面是事件的语法:(参见MSDN)以上是C#学习教程:序列化一个实现了INotifyPropertyChanged的类的实例时发生SerializationException。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——【field:NonSerializedAttribute()]公共事件ChangedEventHandler已更改;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
