Csharp/C#教程:如何忽略二进制序列化的Event类成员?分享


如何忽略二进制序列化的Event类成员?

我需要避免序列化Event类成员,因为当事件由未标记为Serializable的对象处理时,序列化将失败。

我尝试在Event类成员上使用NonSerialized属性,但无法编译。 这行代码:

 Public Event PropertyValueChanged() 

产生以下错误:

属性’NonSerializedAttribute’不能应用于’PropertyValueChanged’,因为该属性在此声明类型上无效。

 Public Event PropertyValueChanged() ' compiles but needs the extra handling described below 

有没有其他方法可以避免序列化活动成员?

如果事件未被处理,这不是问题,我可以通过在序列化之前克隆对象(并忽略事件)来解决它。 只是想知道是否有更好的方法。

谢谢。

在C#中你可以这样做,所以我希望这与VB相同。

请注意,这仅适用于类似字段的事件(即,您没有自己的add / remove ):

 [field: NonSerialized] public event EventType EventName; 

否则之类的:

 [NonSerialized] EventType backingField; public event EventType { add { backingField += value; } remove { backingField -= value; } } 

它不起作用,因为编译器实际上为事件生成了一个支持字段。 要启用它,只需在属性前加上字段:

 [field: NonSerialized] public event EventHandler PropertyValueChanged; 

我以前如何为项目完成它是实现IXmlSerializable接口并手动控制我的序列化。 我发现这使得序列化基于GUI的控件(包含大量事件)变得更加容易。

IXmlSerializable的

上述就是C#学习教程:如何忽略二进制序列化的Event类成员?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1023673.html

(0)
上一篇 2022年1月7日
下一篇 2022年1月7日

精彩推荐