1

在“对象浏览器”窗口中检查 .net 对象模型时,我发现缺少有关密封类的信息。

例如,如果导航到 mscorlib 容器->系统命名空间->字符串类,详细信息窗格将显示以下内容:

系统的公共类字符串
     成员

摘要:
将文本表示为一系列 Unicode 字符。

属性:
[System.Runtime.InteropServices.ComVisibleAttribute(true), System.Reflection.DefaultMemberAttribute("Chars")]

似乎我只能通过代码定义窗口确定一个类是否被密封,或者当然,通过尝试从它派生。

然而,在关注Apress - Pro C# 2008 and the .Net 3.5 PlatformAndrew Troelsen 的文章时,作者在第 188 页展示了对象浏览器如何显示密封状态:

替代文字

此信息是否已从 Visual Studio 2008 对象浏览器中删除?我能以某种方式找回它吗?

尽管作者在整篇文章中都提到了 Visual Studio 2008,但该屏幕截图必须来自以前的版本。这本书实际上是第 4 版,并于 2001 年开始使用 .Net 1.0 Beta 2。

4

2 回答 2

1

我的 Visual Studio 2008 似乎没有这个问题。你升级到SP1了吗?您是否有其他工具或插件可以修改对象浏览器的功能?

于 2009-11-09T15:14:56.513 回答
1

我知道已经有几年了,但我想确认我可以在 VS2k8 SP1 中看到这一点,但仅限String.

我认为这是因为String是唯一class被标记为“特殊”(也许是原始类型?)以及Integer,Long等都是ValueTypes( structures) 的。

请注意问题中的图像SByteSingle并且在 LHS 树视图中String没有现在相同的图标。

编辑:又过了几年,我刚刚注意到 VS2k8 SP1 中的 VB.NET 它确实Public NotInheritable Class String当我将对象浏览器浏览选择设置为我的项目或所有组件*,但只有Public Class String当我选择特定的 .NET框架(但属性已列出,而它们不在其他浏览选择中)。

*如在 OP 中捕获的显示!

StringNB 只有当您在 LHS 树视图上关闭并重新打开它时,它才会更新显示。VS2010 SP1 的行为相同。

在 VS2010 中,我看到所有组件String都显示为NotInheritable.NET 4 和 .NET 2 和 Silverlight 的“空白”,但我目前无法确认 VS2008 在类似情况下显示的内容。

于 2011-08-04T05:05:19.157 回答