Как мне найти все места, которые устанавливают недвижимость? - PullRequest
31 голосов
/ 23 мая 2011

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

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

Ответы [ 6 ]

48 голосов
/ 23 мая 2011

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

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

19 голосов
/ 23 мая 2011

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

14 голосов
/ 12 декабря 2018

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

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

enter image description here

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

Полный выпуск VS2019 - , запланированный на 1 квартал 2019 года .

1 голос
/ 23 мая 2011

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

0 голосов
/ 07 сентября 2017

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

1.Для всех, кроме назначений приращения и смены после / до исправления:

  (^|[^\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:

  1. C #. Только для .NET *
  2. Visual Studio 2012+ только.
  3. Не работает, если за «=» следует EOL.
  4. Не работает, если после «MyVariable» следует EOL.
  5. В зависимости от запускаТочка и область действия Поиск и область действия переменной / свойства могут найти больше / меньше ссылок, чем необходимо.Если есть сомнения, ошибка на стороне «more», так что вы ничего не пропустите.
  6. Не работает для «.» - префикс Variables / Properties.6.1.Если вы не включите его как часть «MyVariable» (то есть «MyStructVariable.MyStructField» или «MyObjectVariable.MyObjectField»), но вы рискуете найти слишком мало ссылок, так как могут быть другие переменные структуры или объекта, используемые для назначения в одну и ту же структуру илиПоле объекта или свойство.
0 голосов
/ 23 мая 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...