如何让DebuggerBrowsable RootHidden工作?

时间:2010-09-10 09:38:33

标签: c# visual-studio-2008 debugging .net-3.5

我昨天读到了DebuggerBrowsable属性,听起来很棒,但是当我试图让它在测试中工作时,它似乎没有任何区别。我正在使用VS 2008版本9.0.30729 1 SP,.Net 3.5 SP1,MSTest框架

    [TestClass]
    public class TestingDebuggerBrowsable
    {
        [TestMethod]
        public void JustToDemonstrateDebugging()
        {
            var foo = new MyExposedClass();
            foo.ToString(); // I put a breakpoint here, and debugged the test
        }

    }

    public class MyExposedClass
    {
        public MyExposedClass()
        {
            ShouldBeSeeingThisInMyDebugger = new List<string> {"foo", "bar"};
        }

        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
        public IList<string> ShouldBeSeeingThisInMyDebugger { get; set; }
    }

当我将鼠标悬停在foo上时,我得到了通常的Listation,我必须向下钻取几个级别以获取元素,这与我省略属性没有区别。

我希望将鼠标悬停在ShouldBeSeeingThisInMyDebugger属性上,并查看该集合的元素。

编辑: 尽管使用相同的IDE和框架,似乎这是在Jeroen的机器上工作,但不是我的机器。我很想知道是否有其他人和我有同样的问题。

2 个答案:

答案 0 :(得分:2)

添加属性后,您将获得:

foo                                               {Sample.MyExposedClass}
    [0]                                           "foo"
    [1]                                           "bar"
  Raw View

没有您获得的属性:

foo                                               {Sample.MyExposedClass}
    ShouldBeSeeingThisInMyDebugger                Count = 2
        [0]                                       "foo"
        [1]                                       "bar"
  Raw View

因此省略了属性ShouldBeSeeingThisInMyDebugger(隐藏了根)。正如该属性所说的那样。

答案 1 :(得分:0)

根据MSDN,它说RootHidden只会隐藏根元素并扩展子项目,以便在鼠标悬停在它上面时显示 -

这里有另一个链接来解释每个属性的作用 -

http://www.dev102.com/2009/04/09/debuggerdisplay-and-debuggerbrowsable-two-debugger-attributes-you-should-know/