【问题标题】:Difference between properties of an object showing in debugger vs proprties in Intellisense调试器中显示的对象属性与 Intellisense 中的属性之间的差异
【发布时间】:2010-09-17 17:52:08
【问题描述】:

当我在调试器中检查对象时,我在调试器中看到的属性比 Intellisense 或代码中可用的属性多得多。

例如,调试器中的 ASP.NET 中的 Page 对象显示了一个具有值的属性 RelativeFilePath。但是当我尝试在代码中使用它时,它不存在。这是为什么?

我在 MSDN 中查找了属性 RelativeFilePath,它存在于移动控件中。不知道为什么它会出现在常规 asp.net 控件的调试器中。

【问题讨论】:

    标签: .net asp.net visual-studio debugging visual-studio-2010


    【解决方案1】:

    调试器和智能感知在它们想要显示的内容方面有着非常不同的目标。

    Intellisense 正在尝试提供可以在对象上有效调用的成员集。本质上可访问的成员和扩展方法。这里的目标是帮助指导用户编写有效的代码。

    调试器正在尝试检查对象的运行时状态。它几乎不关心可访问性,而是将所有相关信息都显示出来。它甚至允许通过用户扩展自定义显示。这意味着您会经常看到对象上根本不存在或无法从用户代码访问的成员。

    后者在您的场景中发挥作用。 Page 类型确实具有 RelativeFilePath 属性。但它是内部的,您的代码无法访问,因此 Intellisense 不会显示它。调试器不考虑成员显示的可访问性,因此提供了值。

    【讨论】:

      【解决方案2】:

      有几个属性可以附加到一个类型以获得更好的调试支持。也许其中之一就是您所看到的?

      http://msdn.microsoft.com/en-us/library/ms228992.aspx

      【讨论】:

        【解决方案3】:

        我猜这是因为它是您无权访问的受保护或私有财产。由于这个原因,您不能在代码中使用它,但您可以在调试器中看到它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-20
          • 1970-01-01
          • 1970-01-01
          • 2014-08-10
          相关资源
          最近更新 更多