Как мне заставить DebuggerBrowsable RootHidden работать? - PullRequest
0 голосов
/ 10 сентября 2010

Вчера я читал об атрибуте DebuggerBrowsable, и он звучал замечательно, однако, когда я пытался заставить его работать в тесте, это, похоже, не имело никакого значения. Я использую VS 2008 версии 9.0.30729 1 SP, .Net 3.5 SP1, MSTest Framework

    [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, я получаю обычное представление List, где мне нужно детализировать несколько уровней, чтобы добраться до элементов, ничем не отличающихся от того, что я пропустил атрибут.

Я надеялся просто навести указатель мыши на свойство ShouldBeSeeingThisInMyDebugger и увидеть элементы коллекции.

EDIT: Кажется, что это работает на машине Йероена, но не моей, несмотря на использование той же IDE и фреймворка. Мне было бы интересно услышать, если у кого-то есть такая же проблема, как у меня.

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010

С добавленным атрибутом вы получите:

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

Без атрибута вы получите:

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

То есть с атрибутом ShouldBeSeeingThisInMyDebugger опущен (корень скрыт). Как говорится в атрибуте.

0 голосов
/ 10 сентября 2010

В соответствии с MSDN говорится, что RootHidden будет скрывать только корневой элемент и расширяет дочерние элементы, чтобы отображать его при наведении на него указателя -

здесь есть еще одна ссылка, объясняющая, что делает каждый атрибут-

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

...