代码之家  ›  专栏  ›  技术社区  ›  Tony_Henrich

调试器中显示的对象属性与Intellisense中显示的属性之间的差异

  •  2
  • Tony_Henrich  · 技术社区  · 14 年前

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

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

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

    3 回复  |  直到 14 年前
        1
  •  3
  •   JaredPar    14 年前

    调试器和intellisense在显示内容方面有着非常不同的目标。

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

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

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

        2
  •  0
  •   scobi    14 年前

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

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

        3
  •  0
  •   AHungerArtist    14 年前