Я бы хотел, чтобы ToString() отображался для класса под моим контролем в режиме отладки.
Было бы неплохо, если бы это было первое, что появилось, когда вы наводите указатель мыши на переменную с помощью мыши. Есть ли для этого атрибут?
Я бы хотел, чтобы ToString() отображался для класса под моим контролем в режиме отладки.
Было бы неплохо, если бы это было первое, что появилось, когда вы наводите указатель мыши на переменную с помощью мыши. Есть ли для этого атрибут?
Отметьте свой класс
[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
Используйте приведенную выше ссылку, чтобы узнать, как это сделать, а затем примените ее к вашему классу, используя метод ToString()
, чтобы вести то, что показано. Я только использовал свойства, но не уверен, что вы можете вводить классы.
Вывод 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;
}
}
Это вернет Property3 в качестве значения ToString()
У меня была аналогичная проблема. Мой класс имел переопределение ToString(), и он все еще не отображался в VS, что было странно.
Добавление атрибута [System.Diagnostics.DebuggerDisplay( "{ToString()}" )] в класс показало исключение в отладчике visual studio, где должна отображаться ToString. Оказалось, что у меня была ошибка с неправильным использованием string.Format() в моей реализации. Это интересное поведение - VS возвращается в значение ToString по умолчанию в случае исключения. Использование указанного атрибута заставляет дисплей отображать вывод метода - действительный или исключение. Это очень полезно для отладки ToString(). В противном случае нет смысла добавлять этот атрибут явным образом к каждому классу, поскольку классы по умолчанию включены, если только по каким-то причинам не требуется отключить это поведение.
Если вы используете визуальную студию, вы можете добавить watch @runtime om thevariable.ToString() line, это будет отображаться в нижней части экрана при достижении точки останова