【问题标题】:Debugging BinaryFormatter serialization调试 BinaryFormatter 序列化
【发布时间】:2012-04-10 15:15:24
【问题描述】:

我正在使用 BinaryFormatter 序列化一个对象,其中包含不同的其他对象。序列化导致这些对象之一的无限循环,经过数小时查看它们,我找不到该循环导致的位置。是否可以在 VisualStudio 中逐步调试序列化过程,或者是否有其他工具可以做到这一点?

【问题讨论】:

  • 你收到StackOverflowException了吗?如果不是,那么它不是序列化程序。

标签: c#


【解决方案1】:

您可以尝试的一件事是将[NonSerialized] 属性添加到类成员,直到序列化成功。它不完全是调试,但可能会很快找到导致问题的成员。

【讨论】:

    【解决方案2】:

    您可以尝试使用OnSerializingOnSerialized 属性,这些属性允许您挂钩到序列化过程。 (见ref1ref2)

    更不用说有以下定义

    [Serializable]
    public class Foo{
    
       [OnSerializing]
       public void DebugHook(StreamingContext context){
         //here goes magic stuff...
       }
    }
    

    Visual Studio 将捕获方法中的断点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多