Вопрос по c#, .net – Как заставить «Find Usages» работать с неявными операторными методами?

6

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

Представьте себе, если у вас есть пример как ниже:

public static implicit operator Deal(string dealAsXml)
{
    //convert the xml into Deal object
}

Неявный неявный оператор помогает вам конвертировать / конвертировать сделки в формате XML в Deal Object.

Обычно, когда вы щелкаете правой кнопкой мыши по методу, вы можете использовать «Find Usages» (или Alt + F7), что весьма полезно, есть ли что-нибудь похожее для неявных операторов?

Я думаю, что это еще одна причина использовать методы Extensions, где это возможно.

Ваш Ответ

1   ответ
11

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

Я полагаю, что теоретически компилятор может пропустить случай, если он может использовать другой неявный оператор (или переключиться на перегрузку метода типа объекта), но он, как правило, работает для моих целей. Я уверен, что есть лучшее решение, но оно пока работает для меня.

EDIT: Просто подумал и проверил это. Пометка вашего неявного оператора как[Obsolete] фактически приведет к предупреждению компилятора, где бы вы его не использовали! Я предполагаю, что это поймает те угловые случаи, когда есть другие допустимые перегрузки, которые вы пропустили бы, полностью удалив неявный оператор.

Resharper также не находит использования неявных операторов. Peter Ritchie
Так же поступил бедняга. :) что довольно сложно, если у вас есть огромное решение Bek Raupov
Это очень плохо. Вы могли бы подумать, что есть способ, поскольку неявные операторы (я полагаю) статически компилируются и могут быть легко обнаружены, как любой статический метод. Chris Sinclair
Помечать неявный оператор как[Obsolete] работает даже лучше, так как должен улавливать другие случаи перегрузки. Chris Sinclair
Точно; Я хотел бы знать, есть ли способ, чтобы это проверить / сообщить через стандартныйFind Symbol Results окно, если только для обеспечения согласованности в рабочем процессе и не нужно изменять код. Особенно в том случае, когда вы просматриваете сторонние библиотеки, где вы не можете точно добавить устаревший атрибут самостоятельно. Chris Sinclair

Похожие вопросы