如何在 C# 中对事件进行 xml 序列化

本文关键字:xml 序列化 事件 | 更新日期: 2023-09-27 17:55:30

我在一堂课上有一些事件。当我使用 NetDataContractSerializer 序列化它们时,事件没有被序列化。有什么方法可以像二进制序列化程序那样对事件进行 xml 序列化?

如何在 C# 中对事件进行 xml 序列化

不,没有办法。XML 格式不保留类型信息,如二进制序列化程序。与二进制序列化程序使用的二进制格式相反,XML 是一种可互操作的格式,并且由于事件是特定于 .NET 的项目,因此无法传输它们。

不要盲目序列化委托和事件

通常,您不应该序列化您的 类的代表或事件。这是 因为序列化需要他的全部 对象图发挥作用,并委托 本质上会序列化你的 订阅者列表组合 (调用列表)。你永远做不到 确保您的所有订阅者都是 可序列化,可以吗?

所以,你应该把[非序列化]放在 代表。

在事件(使用事件关键字)上,您 可以使用

[字段:非序列化] 属性 ("字段"在系统反射中)