Как мы можем создавать геттеры и сеттеры в Visual Studio?

Под «генерацией» я подразумеваю автоматическое создание кода, необходимого для конкретной выбранной (набора) переменных.

Но любые более явные разъяснения или комментарии по поводу хорошей практики приветствуются.

Ответов (16)

Решение

Вместо того, чтобы использовать Ctrl+ K, Xвы также можете просто ввести, prop а затем Tabдважды нажать .

Если вы используете Visual Studio 2005 и новее, вы можете очень быстро создать сеттер / получатель с помощью команды вставки фрагмента.

Щелкните код правой кнопкой мыши, выберите Вставить фрагмент ( Ctrl+ K, X), а затем выберите «prop» из списка.

Вы также можете использовать "propfull" и TABдважды ударить .

Переменная и свойство с get и set будут сгенерированы.

Используйте propfull ключевое слово.

Он сгенерирует свойство и переменную.

Введите ключевое слово propfull в редакторе, а затем два TABs. Он сгенерирует такой код:

private data_type var_name;

public data_type var_name1{ get;set;}

Видео, демонстрирующее использование фрагмента propfull (среди прочего), 4 мин 11 сек.

Я создал свой собственный сниппет, который только добавляет {get; set;} . Я сделал это просто потому, что нахожу propTabнеуклюжим.

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>get set</Title>
            <Shortcut>get</Shortcut>
        </Header>
        <Snippet>
            <Code Language="CSharp">
                <![CDATA[{get; set;}]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

При этом вы вводите свои PropType и PropName вручную, затем набираете getTab, и он добавит набор get. В этом нет ничего волшебного, но поскольку я все равно сначала набираю модификатор доступа, я могу закончить имя и тип.

Просто нажмите Alt+ Insв Android Studio.

После объявления переменных вы получите геттеры и сеттеры в сгенерированном коде.

Сначала получите расширение, просто нажмите ( Ctrl+ Shift+ X) и установите геттер-сеттер ....

После этого просто выберите свою переменную и щелкните правой кнопкой мыши. Перейти в палитру команд ...

И введите getter ... Он предложит сгенерировать методы get и set. Нажмите на это ...

В Visual Studio Community Edition 2015 вы можете выбрать все нужные поля, а затем нажать Ctrl+, .чтобы автоматически сгенерировать свойства.

Вы должны выбрать, хотите ли вы использовать свойство вместо поля или нет.

Я использую Visual Studio 2013 Professional.

  • Поместите курсор в строку переменной экземпляра.

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

  • Нажмите комбинацию клавиш Ctrl+ R, Ctrl+ Eили щелкните правой кнопкой мыши. Выберите контекстное меню RefactorEncapsulate Field ... и нажмите OK.

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

  • В диалоговом окне Предварительный просмотр изменений ссылки - инкапсулировать поле » нажмите кнопку Apply.

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

  • Это результат:

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



Вы также устанавливаете курсор для выбора свойства . Используйте меню ПравкаРефакторингИнкапсулировать поле ...

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

От имени инструмента Visual Studio мы можем легко генерировать свойства C# с помощью онлайн-инструмента, называемого генератором свойств C#.

В Visual Studio 2019 выберите свои свойства следующим образом:

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

Затем нажмите Ctrl+r Затем нажмите Ctrl+e

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

В Visual Studio также есть функция, которая генерирует свойство из частной переменной.

Если щелкнуть переменную правой кнопкой мыши, в появившемся контекстном меню щелкните элемент «Рефакторинг», а затем выберите Инкапсулировать поле ... . Это создаст свойство получателя / установщика для переменной.

Я не слишком большой поклонник этой техники, так как ее немного неудобно использовать, если вам нужно создать много геттеров / сеттеров, и она помещает свойство непосредственно под частное поле, что меня беспокоит, потому что я обычно все мои частные поля сгруппированы вместе, и эта функция Visual Studio нарушает форматирование моего класса.

В дополнение к сниппету 'prop' и автоматическим свойствам существует опция рефакторинга, позволяющая выбрать существующее поле и раскрыть его через свойство ( щелкните правой кнопкой мыши поле → РефакторингИнкапсулировать поле ... ).

Кроме того, если вам не нравится реализация prop, вы можете создавать свои собственные сниппеты. Кроме того, сторонний инструмент рефакторинга, такой как ReSharper , предоставит вам еще больше возможностей и упростит создание более сложных фрагментов. Я бы порекомендовал ReSharper, если вы можете себе это позволить.

Под генерацией вы имеете в виду автоматическое создание? Если вы не это имеете в виду:

В Visual Studio 2008 есть самая простая реализация для этого:

public PropertyType PropertyName { get; set; }

В фоновом режиме это создает подразумеваемую переменную экземпляра, в которой сохраняется и извлекается ваше свойство.

Однако, если вы хотите добавить больше логики в свои свойства, вам понадобится переменная экземпляра для нее:

private PropertyType _property;

public PropertyType PropertyName
{
    get
    {
        //logic here 
        return _property;
    }
    set
    {
        //logic here
        _property = value;
    }
 }

Предыдущие версии Visual Studio всегда использовали этот метод от руки.

На моем компьютере больше не установлена ​​Visual Studio (и я использую Linux), но я помню, что где-то внутри одного из меню был спрятан мастер, который давал доступ к построителю классов.

С помощью этого мастера вы можете определить детали всех ваших классов, включая методы и атрибуты. Если я хорошо помню, была опция, с помощью которой вы могли попросить Visual Studio автоматически создать сеттеры и геттеры.

Я знаю, что это довольно расплывчато, но проверьте это, и вы можете это найти.

Если вы используете ReSharper, зайдите в меню ReSharper → КодСоздать ...

(Или нажмите Alt+ Insвнутри окружающего класса), и вы получите все варианты для создания геттеров и / или сеттеров, о которых вы только можете подумать :-)