Подтвердить что ты не робот

Как найти все места, которые устанавливают свойство?

Легко найти весь код, который использует свойство, однако как мне найти код, который просто устанавливает?

(Когда я нахожу "найти все ссылки" в "наборе", он просто "находит всю ссылку" на самом свойстве, включая код, который просто читает его.)

4b9b3361

Ответ 1

Вы можете использовать Resharper.

В качестве альтернативы, установите установщик как частный (или закомментируйте установщик полностью) и перекомпилируйте. Вы получите ошибки, когда пытаетесь установить свойство.

Ответ 2

Попробуйте прокомментировать часть свойства set, и ее создание дает ошибку во всех местах, где она используется.

Ответ 3

Для чего это стоит, это будет изначально возможно с VS2019.

В частности, в окне "Найти все ссылки" есть новый столбец "Вид", который можно отфильтровать по ссылкам "Запись":

enter image description here

Конкретный Github PR, который добавил эту функцию, планируется включить в Visual Studio 2019 Preview 2 (16.0.P2) https://github.com/dotnet/roslyn/issues/22545

Полная версия VS2019 запланирована на первый квартал 2019 года.

Ответ 4

Вы можете выполнить текстовый поиск на propertyName = - вы можете попробовать использовать поиск в регулярном выражении, чтобы разрешить от 0 до n пробелов между именем и =.

Ответ 5

AFAIK, это невозможно сделать с помощью стандартных функций Visual Studio - он не делает ничего особенного для свойств, чтобы проверить, используются ли они с левой или с правой стороны при поиске и, нет возможности сказать это, чтобы сделать это.

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

Наконец, предложение @Kamyar о том, что свойства, недоступные для доступа, выглядят достойными внимания, но это зависит от того, сколько времени требуется, чтобы ваш проект был скомпилирован, может потребоваться еще больше, чтобы найти все, - я не уверен почему вам понадобится Resharper, чтобы сделать это, хотя.

Ответ 6

Если вы используете визуальную студию 2010 только правой кнопкой мыши по своему свойству и выберите "view call hierarchy"

ИЛИ

Вид- > Иерархия вызовов из пункта меню

Ответ 7

Здесь достаточно надежное решение, которое будет работать и для не-Свойства с помощью Visual Studio без сторонних инструментов. Обязательно выберите опции "Случай соответствия" и "Использовать регулярные выражения" в "Найти".

1. Для всех, кроме Post-Pre-fix Increment и Shift Assignments:

  (^|[^\w.])MyVariable\s*([\+\-\*/%&|\^]|)=[\w\s]

2. Для пост-префиксных приращений и присвоений сдвига:

  ((^|[^\w.])MyVariable\s*(\+\+|--)|(\+\+|--)\s*MyVariable[^\w.]|(^|[^\w.])MyVariable\s*(<<|>>)=)

3. Для параметров Out/Ref (N/A для свойств):

  (^|[^\w.])(out|ref)\s+MyVariable[^\w.]

CAVEATS:

  • Только С#.NET.
  • Только Visual Studio 2012+.
  • Не работает, если за "=" следует EOL.
  • Не работает, если за "MyVariable" следует EOL.
  • В зависимости от начальной точки и области поиска и области действия переменной/свойства может быть найдено больше/меньше ссылок, чем необходимо. Когда есть сомнения, ошибка на стороне "больше", поэтому вы ничего не пропустите.
  • Не работает для "." - префиксные переменные/свойства. 6.1. Если вы не включите его как часть "MyVariable" (т.е. "MyStructVariable.MyStructField" или "MyObjectVariable.MyObjectField" ), но вы рискуете найти слишком мало ссылок, поскольку могут быть другие переменные Struct или Object, используемые для присвоения тем же Struct или Поле или свойство объекта.