Отладка автоматических свойств


126

Есть ли способ установить точку останова для установщика / получателя в автоматически реализуемом свойстве?

int Counter { get; set; }

Помимо изменения его на стандартное свойство (я делаю это таким образом, но для этого мне нужно изменить и перекомпилировать весь проект)


2
С какой IDE вы работаете? Visual Studio? (Я предлагаю вам добавить соответствующий тег к вашему вопросу, поскольку на самом деле это больше связано с конкретной IDE, чем с самим языком C #.)
stakx - больше не участвует

5
@stakx в мире .NET у нас есть IDE по умолчанию :)
Стилгар

1
@Stilgar, я в курсе, я ведь сам использую VS. Но «по умолчанию» не означает, что он единственный или что все его используют. Поскольку это вопрос IDE, важно знать, на какую IDE мы здесь смотрим. Отсюда мой предыдущий комментарий.
stakx - больше не участвует

4
@stakx хорошо, когда нет упоминания об IDE для вопроса, связанного с .NET, предполагается, что это VS. Более того, я в основном шутил :)
Стилгар

Ответы:


220

Используя Visual Studio 2008, 2010, 2012, 2013:

  1. Перейти в окно точки останова
  2. Новое -> Прервать функцию…
  3. Для getтипа введите:ClassName.get_Counter()

    Для setтипа введите:ClassName.set_Counter(int)

При срабатывании точки останова вы получите сообщение «Нет доступных источников» , но вы получите местоположение вызова в стеке вызовов.

Я нашел это решение здесь, в MSDN


Briliant. Спасибо. Мне больше не нужно менять автоматические свойства на стандартные (с полем). И больше никакой перекомпиляции :)
Марек Квиндач

9
это также работает для конструкторов по умолчанию. useClassName.ctor
Călin Darie


1
Здесь не работает. Я попробовал оба, Form.set_Heightи MainWindow.set_Heightни один из них не работал.
Hi-Angel

@ Hi-Angel, обратите внимание, что для сеттеров вы должны включать тип, например, Form.set_Height (int)
Мэтт Смит

7

Если бы я был вами, я бы временно сделал свойство стандартным, поддерживаемым внутренним полем ... установите точки останова, а затем вы можете изменить его после.



4

В Visual Studio 2017:

Наведите указатель мыши на слово «установить» -> щелкните правой кнопкой мыши -> Точка останова -> Вставить точку останова

Перед:

Перед

После:

После


0

Установите точки останова там, где вы устанавливаете свойство или получаете свойство, никак иначе.

Вы можете сделать это найти все ссылки варианты

И поскольку он только сохраняет значения и не имеет кода в части установки, что вы отлаживаете?


3
да, но что, если вы используете его, например, в 20 местах? И каждая новая точка останова замедляет процесс отладки. Или, что, если доступ к свойству осуществляется фреймворком (например, сериализация)?
Марек Квиндач

1
Условные точки останова. Поместите точку останова, щелкните ее правой кнопкой мыши и назначьте ей условие ...
Филлип
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.