Как переименовать свойства или открытые поля после перемещения их в другой класс? - PullRequest
3 голосов
/ 01 ноября 2011

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

"Переименовать" не принимает "myClass.Field" в качестве действительного. Является ли изменение с использованием Find-and-Replace единственной опцией (хотя тогда мне придется проверять каждое вхождение из-за переменных с одинаковыми именами)? Или есть такой простой способ, как «Переименовать»?

Ответы [ 2 ]

6 голосов
/ 01 ноября 2011

Нет (встроенного) рефакторинга, который переместит переменную в другой тип. Некоторые сторонние инструменты рефакторинга (такие как Resharper) включают это в качестве дополнительных функций.

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

0 голосов
/ 02 ноября 2011

Вот что я бы сделал: 1. Убедитесь, что все сначала хорошо скомпилировано :) 2. Переместите вашу переменную в новый класс MyClass 3. Добавьте поле MyClass myClass в исходный класс и создайте его экземпляр в конструкторе. 4. С помощью текстового редактора (поскольку VS не позволяет этого) найдите все экземпляры Field и замените их на myClass.Field 5. Вернитесь к VS, скомпилируйте ваш код снова Это должно работать нормально и сэкономить ваше драгоценное время.

С уважением,

...