2009-06-22 5 views
4

У меня есть много кода на C#, который использует общедоступные поля, и я хотел бы преобразовать их в свойства.Инструменты для рефакторинга открытых полей C# в свойствах

У меня есть Resharper, и он будет делать их один за другим, но это будет навсегда.

Кто-нибудь знает об автоматическом инструменте рефакторинга, который может помочь в этом?

ответ

8

Resharper делает это очень быстро, используя Alt + PageDown/ALt + Enter (с привязками клавиш по умолчанию). Если вы находитесь в первом поле, Alt + PageDown перейдет к следующему (поскольку он включает в себя обертывание открытых полей в качестве предлагаемого рефакторинга), а Alt + Enter предложит вам обернуть его в свойство.

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

+0

Когда я нажимаю Alt + Enter, я не получаю предложение по рефакторингу «Инкапсулировать поле». Я должен щелкнуть правой кнопкой мыши и использовать меню рефакторинга. Я использую привязки ключевых слов по умолчанию и самую последнюю версию (4.5.1231.7). –

+2

Ctrl + R/E - это прямой рефакторинг, который вы хотите. Вы могли бы просто выполнить Alt + PageDown, затем Ctrl + R/E, и избегать меню. Я не уверен, почему, но я получаю это как предлагаемый рефакторинг с меню Alt + Enter ... –

+0

Да, Ctrl + R/E работает. Благодаря! –

1

Если вы находитесь в VS.NET при переименовании поля, VS предлагает вам изменить все вхождения переименованного поле.

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

+0

Это намного медленнее, чем использование resharper или даже встроенная рефакторинг Visual Studio для обертывания полей в свойствах. –

+0

Это полезно, если вы используете экспресс-версию Visual Studio, которая не поддерживает рефакторинг «Encapsulate Field». –