当我在调试器中检查对象时,我在调试器中看到的属性比在Intellisense或代码中可用的属性多得多。
例如,调试器中ASP.NET中的Page对象显示了一个具有值的属性RelativeFilePath。但是当我尝试在代码中使用它时,它并不存在。为什么会这样呢?
我在MSDN中查找了RelativeFilePath属性,它存在于移动控件中。不确定为什么它会出现在常规asp.net控件的调试器中。
发布于 2010-09-18 01:57:27
调试器和intellisense在要显示的内容方面具有非常不同的目标。
Intellisense正在尝试提供可在对象上有效调用的成员集。本质上可访问的成员和扩展方法。这里的目标是帮助指导用户编写有效的代码。
调试器正在尝试提供对对象的运行时状态的检查。它不关心可访问性,而是将所有相关信息显示出来。它甚至允许通过用户扩展定制显示。这意味着您经常会看到对象上根本不存在的成员,或者用户代码无法访问的成员。
后者在您的场景中发挥作用。Page类型确实具有RelativeFilePath属性。但它是内部的,您的代码无法访问它,因此Intellisense不会显示它。调试器不考虑成员显示的可访问性,因此提供了该值。
发布于 2010-09-18 01:54:22
有几个属性可以附加到类型以获得更好的调试支持。也许其中一个就是你所看到的?
http://msdn.microsoft.com/en-us/library/ms228992.aspx
发布于 2010-09-18 01:54:50
我猜是因为这是你无权进入的受保护的或私有的财产。因此,您不能在代码中使用它,但可以在调试器中看到它。
https://stackoverflow.com/questions/3737697
复制相似问题