C #: Как найти ссылки на оператор равенства для определенного класса в Visual Studio - PullRequest
14 голосов
/ 13 сентября 2011

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

Ответы [ 2 ]

14 голосов
/ 13 сентября 2011

В обоих случаях я бы добавил перегрузку / переопределение, а затем использовал бы «Поиск использования» (в Resharper) или «Просмотр иерархии вызовов» (собственный Visual Studio).Если что-то появится, это будет изменение.

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

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

2 голосов
/ 13 сентября 2011

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

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

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

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