Устаревший метод C # с переходом к новому методу

#c# #visual-studio #intellisense

#c# #visual-studio #intellisense

Вопрос:

Можно ли добавить новый метод к устаревшему атрибуту метода, чтобы, если кто-то введет устаревший, появился новый?

Как со списком.Длина, которая переходит к подсчету, или это vs, который это делает?

Комментарии:

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

2. Вы имеете в виду, как в приведенных здесь примерах: ObsoleteAttribute ?

3. Также стоит отметить, что здесь нет никакого List.Length имущества, даже устаревшего.

4. @DavidG если я введу новый список <int>(). Длина — это опция, но когда я выбираю ее, она меняется на количество. Это может быть resharper, делающий это.

5. Да, почти наверняка это делает Resharper.

Ответ №1:

Я думаю, вы не можете получить то, что хотите, в VS IDE. И ваша идея взята из Resharper Intellisense.

Фактически, VS IDE отказалась от устаревших переменных, атрибутов и так далее. Вы не можете найти их в VS IDE. И только Resharper Intellisense остается старым и может автоматически переходить к новому предложенному Intellisense.

Однако следует отметить, что эти требования относятся к системным переменным VS по умолчанию, и они являются встроенными параметрами (мы не можем изменять свойства, подобные функции).

Если вы попробуете метод, свойства, написанные самостоятельно, единственный способ — использовать ObsoleteAttribute . И вам нужно вручную добавлять примечания для каждого устаревшего метода, а затем вручную переходить на новый метод в соответствии с запросом IntelliSense.

И независимо от того, является ли это Resharper или VS IDE, вы не можете получить функцию автоматической замены устаревших методов Intellisense.

Более подробно, напоминание Resharper более очевидно. Test() и Test1() это пользовательский метод, написанный мной и используемый ObsoleteAttribute .

введите описание изображения здесь

VS IDE — это:

введите описание изображения здесь

Предложение

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

введите описание изображения здесь

И когда вы закончите заявку, вы можете поделиться ссылкой здесь, и все, кто в ней заинтересован, включая нас, проголосуют за нее.

Я думаю, что все это привлечет больше внимания со стороны Microsoft, чтобы помочь нам быстрее справиться с этим.

Ответ №2:

Нет. Вы должны предоставить хорошее сообщение с описанием с инструкциями о том, как переписать код. Атрибут ObsoleteAttribute — это сообщение разработчикам о том, что код, который они используют, нуждается в обновлении, и для этого обычно требуется вмешательство разработчика, чтобы убедиться, что изменение не повлияет на поведение.

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