С#: Как найти ссылки на оператор equals для определенного класса в Visual Studio

Я хотел бы переопределить оператор .Equals и == для класса. Мне нужно проверить, есть ли в настоящее время какие-либо сравнения сравнений в любом месте этого класса. Как мне это сделать?

Ответы

Ответ 1

В обоих случаях я бы добавил overload/override, а затем использовал "Find Usages" (в Resharper) или "Просмотр иерархии вызовов" (родной Visual Studio). Если что-нибудь появится, это будет изменение.

Другой подход (если ни один из них недоступен) заключается в (при выполнении этого) добавить [Obsolete] к методам переопределения/перегрузки, которые вы добавляете, - тогда любой код, который начинает их использовать (т.е. имеет изменение поведения) будет отображаться как предупреждение.

Предостережение: если override (Equals) является частью цепочки наследования, которая уже переопределяет Equals, обратите внимание, что код, ссылающийся на базовый класс, не будет отображаться ни в одном из вышеперечисленных. Это включает код с использованием object.

Ответ 2

Я думаю, вы можете сделать это, используя Resharper. У Resharper есть функция "find usages", которая достаточно мощная.

Вы можете переопределить метод Equals в классе, щелкнуть правой кнопкой мыши по нему и выбрать опцию поиска, если у вас установлен R #.

Затем вы получите список мест, где этот метод используется.