Как генерировать геттеры и сеттеры в Visual Studio? - PullRequest
206 голосов
/ 06 августа 2008

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

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

Ответы [ 15 ]

271 голосов
/ 06 августа 2008

Вместо использования ctrl + k , x вы также можете просто набрать prop, а затем дважды нажать клавишу Tab

49 голосов
/ 06 августа 2008

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

Если щелкнуть правой кнопкой мыши переменную, в всплывающем контекстном меню щелкните элемент «Refactor». Затем выберите поле инкапсуляции. Это создаст свойство getter / setter для переменной.

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

30 голосов
/ 28 апреля 2015

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

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

    enter image description here

  • Нажмите сочетание клавиш Ctrl + R , Ctrl + E или щелкните правой кнопкой мыши, выберите контекстное меню Refactor \ Encapsulate Field..., затем нажмите OK.

    enter image description here

  • В Preview Reference Changes - Encapsulate Field diaglog нажмите кнопку Apply.

    enter image description here

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

    enter image description here



Вы также поместите курсор для выбора свойства , используйте Меню Редактировать \ Refactor \ Encapsulate Field ...

и

private int productID;

public int ProductID
{
    get { return productID; }
    set { productID = value; }
}

становится

public int ProductID { get; set; }
30 голосов
/ 06 августа 2008

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

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 этот метод всегда также использовался.

26 голосов
/ 17 июля 2012

вы также можете использовать «propfull» и дважды нажать TAB , переменная и свойство с get и set будут сгенерированы.

6 голосов
/ 06 августа 2008

Если вы используете Visual Studio 2005 и выше, вы можете очень быстро создать установщик / получатель, используя команду вставки фрагмента. Щелкните правой кнопкой мыши по вашему коду, нажмите Вставить фрагмент ( Ctrl + k , x ) и выберите «опора» в списке. Надеюсь, это поможет.

4 голосов
/ 28 сентября 2009

Если вы используете ReSharper, перейдите в меню ReSharper -> Code -> Generate ... (или нажмите Alt + Ins внутри окружающего класса) и вы получите все варианты генерации геттеров и / или сеттеров, о которых вы можете подумать: -)

2 голосов
/ 07 января 2017

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

2 голосов
/ 25 марта 2015

Я знаю, что это старше, чем солнце, но решил, что я опубликую это как мой ответ, потому что это так же, как делать это таким образом.

Я создал собственный фрагмент, который ТОЛЬКО добавляет {get; set;}. Я сделал это только потому, что нахожу prop > tab неуклюжим.

<?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>

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

2 голосов
/ 25 сентября 2014

используйте ключевое слово propfull.
Будет сгенерировано свойство и переменная

...