VS调试器不会进入XML反序列化器构造函数

时间:2012-07-25 15:13:35

标签: c# visual-studio-2010 debugging xml-deserialization step-into

背景

我有一个序列化为XML文件的类,因此用户可以更改一些启动设置。该类有一个枚举,我希望反序列化器接受name或int值为有效。

protected MyClass(SerializationInfo info, StreamingContext context) {
  // want to Step Into  right here
  try {
    logLevel = (Logger.Level)info.GetValue("LogLevel", typeof(Logger.Level));
  }
  catch(Exception) {
    logLevel = (Logger.Level)info.GetValue("LogLevel", typeof(Int32));
  }
  …

它不起作用,XML deserialize()仍然引发一个异常抱怨,而不是'0'或'1'等不是该类型的有效值。所以很自然地我尝试通过 Step Into (F11)调试行MyClass mc = (MyClass)xmlSerializer.Deserialize(filepath);

步入 不会达到预期的代码

但Visual Studio跳转到的下一行是类'默认构造函数MyClass()的开头,而不是MyClass(SerializationInfo,StreamingContext)!!

所以我在F11中通过该构造函数(它分配与XML文件无关的默认值,据我所知,根本不应该被调用)当它跳出构造函数时我会在异常处理和以前一样 - 显然没有完成我编写的反序列化代码。

我甚至尝试在我要调试的代码的开头放置System.Diagnostics.Debugger.Launch().Break(),而Visual Studio 2010只是忽略它。

是否有关于反序列化构造函数的内容,Visual Studio无法或不会通过它们进行跟踪,或者是什么交易?

0 个答案:

没有答案