Скрытие полей из отладчика
Можно ли скрыть поля и/или свойства из окна просмотра отладчика? Смотрите, у нас есть класс с более чем 50 частными полями, большинство из которых доступны через общедоступные свойства. Это означает, что мы видим дублирование большого количества данных в списке окон просмотра.
Есть ли способ контролировать это?
Ответы
Ответ 1
Попробуйте этот атрибут:
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
Используйте его, чтобы скрыть свои поддерживающие поля, поместив атрибут над объявлением поля следующим образом:
class Foo
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
int bar; // this one will be hidden
int baz; // but this one will be visible like normal
}
Имейте в виду, что перечисление DebuggerBrowsableState
имеет два других члена:
Collapsed:
Сбрасывает элемент в отладчике.
RootHidden:
. Это показывает дочерние элементы коллекции, но скрывает сам корневой элемент.
Ответ 2
Проверьте атрибут DebuggerBrowsableAttribute:
http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggerbrowsableattribute.aspx
На самом деле в этой статье есть несколько полезных советов для этой области:
http://msdn.microsoft.com/en-us/magazine/cc163974.aspx
Вы можете обнаружить, что использование DebuggerTypeProxy имеет больше смысла. Это позволяет вам предоставить "настраиваемый вид" этого типа.
Ответ 3
ОтладчикBrowsableAttribute рассматривается в этом другом вопросе fooobar.com/questions/638/.... Если вы делаете С# тяжело, тогда это хороший вопрос для чтения.
Ответ 4
Я знаю, что это старо, но вам будет намного лучше использовать DebuggerTypeProxy http://msdn.microsoft.com/en-us/library/d8eyd8zc.aspx
Таким образом, вам не нужно модифицировать свой класс с уродливыми атрибутами, и дополнительная выгода заключается в том, что вы всегда можете смотреть на реальный тип, если вам действительно нужно взглянуть на одно из этих "скрытых" полей.
Ответ 5
Вы можете использовать autos вместо locals или использовать часы и следить только за интересующими переменными...