Intereting Posts
Показать PNG с альфа-каналом в C # ELMAH – регистрация исключений без HttpContext Обнаружение дезактивации и закрытия приложения в Windows Phone 8.1 XAML Способ записи TcpClient гарантирует, что данные доставляются на сервер? Самонаводящиеся ракеты, как они работают? C #: asp.net 3.5: Deserialize JSON – как получить каждую строку объекта? Ошибка: java.lang.NullPointerException: попытка вызвать виртуальный метод ‘android.content.res.XmlResourceParser Twitterizer 2 и C # – пространство имен не найдено RX: Как обрабатывать n буферизованных элементов из последовательности, затем ждать t секунд, прежде чем обрабатывать следующие n элементов? DirectX Image texture quad отображает базовый цвет элементов управления, где он прозрачен Как использовать буфер обмена для копирования данных из листа Excel в DataTable? LINQ to Entities не распознает метод «System.String ToString (Int32)» Почему Action / Func лучше, чем обычный метод в .NET? Делегаты и интерфейсы в C # Вызов родительского метода UserControl из дочернего UserControl в Silverlight

Как заставить ToString () отображаться в Debug

Я хотел бы получить ToString () для отображения для classа под моим контролем в режиме отладки.

Было бы неплохо, если бы это было первым, что появилось, когда вы наводили указатель мыши на переменную с помощью мыши. Есть ли атрибут для этого?

Отметьте свой class

[System.Diagnostics.DebuggerDisplay("{ToString()}")] 

Тестовое задание:

 [System.Diagnostics.DebuggerDisplay("{ToString()}")] class MyClass { private string _foo = "This is the text that will be displayed at debugging" public override string ToString() { return _foo; } } 

Теперь, когда вы наведите указатель мыши на переменную с помощью мыши, она покажет, This is the text that will be displayed at debugging .

Существует DebuggerDisplayAttribute который позволяет вам влиять на отображение. Он позволяет писать довольно сложные выражения для вывода вывода отладки, хотя это не рекомендуется делать .

Однако, если вы переопределили ToString тогда отладчик документирован, чтобы отобразить это по умолчанию. Может быть, что-то не так с кодом?

Что вы ищете, это DebuggerDisplayAttribute :

http://www.codeproject.com/Articles/117477/Using-DebuggerDisplayAttribute

Используйте приведенную выше ссылку, чтобы узнать, как это делается, а затем примените ее к вашему classу, используя метод ToString() чтобы управлять показанным. Я только использовал свойства, не уверен, что вы можете вводить classы.

Вывод ToString должен быть по умолчанию, который вы видите при отладке.

Его можно переопределить с помощью атрибута DebuggerDisplay (см. MSDN ).

Я предпочитаю переопределять метод ToString потому что он проще и универсальнее, потому что он помогает при записи в файлы журнала.

Какой результат вы видите? Если вы получите имя типа, вы увидите по умолчанию ToString .

в объекте Переопределите .ToString следующим образом:

 public class MyObject { public int Property1{ get; set; } public string Property2{ get; set; } public string Property3 { get; set; } public override string ToString() { return Property3; } } 

Это вернет свойство3 как значение ToString ()

У меня была аналогичная проблема. Мой class имел переопределение ToString (), и он все еще не отображался в VS, что было странно.

Добавление атрибута [System.Diagnostics.DebuggerDisplay (“{ToString ()}”)] в class показало исключение в отладчике visual studio, где должна отображаться ToString. Оказалось, что у меня была ошибка с неправильным использованием string.Format () в моей реализации. Это интересное поведение – VS возвращается в значение ToString по умолчанию в случае исключения. Использование упомянутого атрибута заставляет дисплей отображать вывод метода – действительный или исключающий. Это очень полезно для отладки ToString (). В противном случае нет смысла добавлять этот атрибут явным образом к каждому classу, поскольку classы по умолчанию включены, если только по какой-то причине не требуется отключить это поведение.

Если вы используете визуальную студию, вы можете добавить watch @ runtime om в строку yourvariable.ToString (), это будет отображаться в нижней части экрана, когда она попадает в точку останова