【发布时间】:2011-01-21 02:40:56
【问题描述】:
在 .NET(至少
由于 VB.NET 实现事件的方式,当您序列化一个对象时,它的事件也会被序列化(因为事件实际上是使用隐藏的多播委托字段实现的)。这样做的一个副作用是,任何处理由被序列化的对象引发的事件的对象都将被视为对象图的一部分,并且也将被序列化。
可以找到一些解决方法,实现自定义序列化或使用委托而不是事件:
- http://www.codeproject.com/KB/vb/serializevbclasses.aspx
- http://www.lhotka.net/WeBlog/CommentView.aspx?guid=776f44e8-aaec-4845-b649-e0d840e6de2c
但似乎没有一个能完全满足作者和用户的需求。
.NET 3 / 4 是否解决了这个问题?
【问题讨论】:
-
这个问题不是 VB.NET 特有的——它是 .NET 的工作原理。
-
但是使用 C# ve 可以使用
[Field:NonSerialized]找到更“灵活”的解决方案。至少,没有特别需要编写补充帮助代码来解决问题。 -
@serhio:那个属性不也适用于VB吗?为什么不?我不是在谈论
WithEvents。 -
@serhio:试试“
<Field: NonSerialized> _” -
@John,不要建议你不知道或从未尝试过的东西,这在 VB.NET 中不起作用
标签: c# .net vb.net serialization .net-2.0