2015-07-28 2 views
14

Раньше я довольно уверен, что команда «Encapsulate поле» превратится что-то вроде следующего:Как настроить форматирование кода, генерируемого «Encapsulate Field»?

public int SomeNumber; 

в следующем (что я хочу от VS 2015):

private int someNumber; 

public int SomeNumber { 
    get { return someNumber; } 
    set { someNumber = value; } 
} 

но в Visual Studio 2015 Я вижу следующее:

private int someNumber; 

public int SomeNumber { 
    get { 
     return someNumber; 
    } 

    set { 
     someNumber = value; 
    } 
} 

Есть ли способ исправить это?

+2

Нечетно названный рефакторинг «Инкапсулировать поле» (странно названный публичным get/set с полем поддержки не является инкапсуляцией) управляется с помощью фрагмента. Таким образом, вы должны иметь возможность редактировать этот фрагмент. См. Https://msdn.microsoft.com/en-us/library/ms165392.aspx –

+1

@DavidArno Спасибо, я не понял, что фрагменты кода были использованы за пределами клавиш быстрого доступа. Я только что открыл файл snippet «C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC# \ Snippets \ 1033 \ Refactoring \ EncapsulateField.snippet", но, похоже, он правильно отформатирован:/ –

+0

i не знаете меню в 2015 году, но 2013 Tools-> Options-> в левой панели TextEditor-> C# -> Formatting, и оттуда вы увидите различные опции в общих параметрах, отступах, новых строках, которые позволяют отформатировать код. – terrybozzio

ответ

7

Это изменение дизайна в VS2015. В предыдущих версиях команда refactoring обратила внимание на параметр «Инструменты»> «Параметры»> «Редактор текста»> «C#»> «Обтекание»> «Оставить блок в одной строке». С его включением вы получите свойство getter и setter body так, как оно закодировано в фрагменте, скобки на той же линии. Как вам это нравится.

В отличие от VS2015, теперь он обращает внимание на инструмент «Инструменты»> «Параметры»> «Текстовый редактор»> «C#»> «Форматирование»> «Новые линии»> «Установить открытую скобку в новой строке для методов». Вы можете выбирать между «египетскими» брекетами или раздельными раскладками. Ни один из них вам не нравится.

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

Только реальный вариант - позволить Microsoft понять, что вы недовольны изменениями. Существует an existing UserVoice article, который предлагает изменения. Вы можете проголосовать за нее или написать свой собственный. Отправьте ссылку на нее в своем вопросе, чтобы другие пользователи SO могли голосовать.

+0

Как насчет пустой линии над установщиком; даже если бы я мог просто заставить его уважать форматирование кода для этого, я был бы намного счастливее с ним. Я не могу придумать вескую причину этой пустой строки, и это будет означать меньше ручной переформатировки. –

0

Воля, поможет вам:
-Encapsulate поле Рефакторинг (C#): https://msdn.microsoft.com/en-us/library/a5adyhe9.aspx

Этот сайт, кажется, предлагает решение в конце темы.

Проверьте также этот пост: -Different Стиль рефакторинга для инкапсуляции полей: как заставить Visual Studio изменить его? Different Refactoring style for field encapsulation: how to make Visual Studio change it?

Это один соответствующий вашему вопросу определенным образом: вопрос действительно связан с твоим :)

+1

Подумайте о том, чтобы положить часть информации из ваших связанных страниц в ваш ответ; Таким образом, если кто-то не может получить доступ к ссылке по какой-либо причине, они могут получить некоторую информацию. Это поможет всем участникам! –

+0

@FKunecke Спасибо за совет :) Это сейчас отредактировано :) – Charley

+0

Спасибо; это было предложено ранее, но мой файл фрагмента уже кажется тем, что я хочу: http://pasteboard.co/2tyolvl9.png, если я не ищу неправильный файл. –

Смежные вопросы