#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 — это сообщение разработчикам о том, что код, который они используют, нуждается в обновлении, и для этого обычно требуется вмешательство разработчика, чтобы убедиться, что изменение не повлияет на поведение.
Возможно, можно создать новый атрибут и некоторые инструменты для обновления исходного кода в соответствии с информацией в атрибуте. Но если вам нужна такая функциональность, вам нужно будет реализовать ее самостоятельно. Я предполагаю, что может быть немного сложно обрабатывать различные крайние случаи.