我在课堂上有一些活动。当我使用NetDataContractSerializer序列化它们时,事件没有被序列化。有没有什么方法可以xml序列化像BinarySerializer这样的事件?
答案 0 :(得分:3)
不,没有办法。 XML格式不保留类型信息,例如BinarySerializer。与二进制序列化程序使用的二进制格式相反,XML是一种可互操作的格式,并且因为事件是特定于.NET的工件,所以它们无法传输。
答案 1 :(得分:1)
不要盲目地序列化代表和事件
通常,你不应该序列化你的 班级的代表或活动。这是 因为序列化使他充满了 对象图进入游戏和代表 本质上将序列化你的 订户列表进入组合 (调用列表)。你永远做不到 确定你的所有订阅者都是 可序列化的,可以吗?
所以,你应该打开[NonSerialized] 代表。
关于事件(使用event关键字)你
可以使用[Field:NonSerialized]属性 (“Field”在System.Reflection中)