Comment générer des getters et setters dans Visual Studio?

226

Par «générer», j'entends la génération automatique du code nécessaire pour une (des) série (s) particulière (s) sélectionnée (s).

Mais toute explication ou commentaire plus explicite sur les bonnes pratiques est le bienvenu.

Paul
la source

Réponses:

297

Plutôt que d'utiliser Ctrl+ K, Xvous pouvez également taper propet appuyer Tabdeux fois.

Orion Edwards
la source
70
Et n'oubliez pas "propg" + tab qui génère le même, mais avec un setter privé.
Andrew M
Voir msdn.microsoft.com/en-us/library/z41h7fat.aspx pour des extraits de code plus utiles dans Visual C #
Titus
51

Visual Studio possède également une fonctionnalité qui générera une propriété à partir d'une variable privée.

Si vous faites un clic droit sur une variable, dans le menu contextuel qui apparaît, cliquez sur l'élément « refactoring », puis choisissez Encapsulate champs ... . Cela créera une propriété getter / setter pour une variable.

Je ne suis pas trop fan de cette technique car elle est un peu gênante à utiliser si vous devez créer beaucoup de getters / setters, et cela place la propriété directement en dessous du champ privé, ce qui me dérange, car généralement regrouper tous mes champs privés et cette fonctionnalité Visual Studio rompt la mise en forme de ma classe.

Dan Herbert
la source
10
Malheureusement, cette option n'est pas donnée par les éditions express de Visual Studio.
Toby
12
il y a aussi shourtcut - je préfère de cette façon :) - CTRL + R + E
Vukasin
32

J'utilise Visual Studio 2013 Professional.

  • Placez votre curseur sur la ligne d'une variable d'instance.

    Entrez la description de l'image ici

  • Appuyez sur les touches de combinaison Ctrl+ R, Ctrl+ Eou cliquez avec le bouton droit de la souris. Choisissez le menu contextuel RefactorEncapsuler le champ ... , puis appuyez sur OK.

    Entrez la description de l'image ici

  • Dans la boîte de dialogue Aperçu des modifications de référence - Encapsuler le champ , appuyez sur le bouton Apply.

    Entrez la description de l'image ici

  • C'est le résultat:

    Entrez la description de l'image ici



Vous placez également le curseur pour choisir une propriété . Utilisez le menu EditionRefactoriserEncapsuler le champ ...

Do Nhu Vy
la source
30

Par générer, voulez-vous dire générer automatiquement? Si ce n'est pas ce que vous voulez dire:

Visual Studio 2008 a l'implémentation la plus simple pour cela:

public PropertyType PropertyName { get; set; }

En arrière-plan, cela crée une variable d'instance implicite dans laquelle votre propriété est stockée et récupérée.

Cependant, si vous voulez mettre plus de logique dans vos propriétés, vous devrez avoir une variable d'instance pour cela:

private PropertyType _property;

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

Les versions précédentes de Visual Studio utilisaient toujours cette méthode longue également.

Jon Limjap
la source
N'est-ce pas la norme en C # est le tiret inférieur après le nom du membre property_au lieu d'avant _property?
Julen
2
@Julen - J'ai toujours vu la convention _property.
Nathan DeWitt
27

Vous pouvez également utiliser "propfull" et frapper TABdeux fois.

La variable et la propriété avec get et set seront générées.

Chirag Khatsuriya
la source
c'est le plus utile et je l'oublie toujours
Dave Alperovich
Je fais la sérialisation XML et génère une tonne de propriétés partout dans le spectacle. + 100septillions de votes positifs si je le pouvais. Edit! ENCORE MIEUX, script autohotkey + ^ this = productivité supérieure à 90000!
Eon
Vidéo montrant l'utilisation d'extraits de code «propfull» (entre autres), à 4 min 11 s.
Peter Mortensen
6

Si vous utilisez Visual Studio 2005 et versions ultérieures, vous pouvez créer un setter / getter très rapidement à l'aide de la commande insert snippet.

Faites un clic droit sur votre code, cliquez sur Insérer un extrait ( Ctrl+ K, X), puis choisissez "accessoire" dans la liste.

omar
la source
4

Si vous utilisez ReSharper, allez dans le menu ReSharper → CodeGénérer ...

(Ou appuyez sur Alt+ Insdans la classe environnante), et vous obtiendrez toutes les options pour générer des getters et / ou des setters auxquels vous pouvez penser :-)

Oliver
la source
3

Utilisez le propfullmot - clé.

Il va générer une propriété et une variable.

Tapez le mot-clé propfulldans l'éditeur, suivi de deux TABs. Il générera du code comme:

private data_type var_name;

public data_type var_name1{ get;set;}

Vidéo montrant l'utilisation d'extraits de code «propfull» (entre autres), à 4 min 11 s.

avinash kadu
la source
2
veuillez fournir plus d'informations sur votre réponse, les réponses avec une brève description ne sont pas OK pour les prochains visiteurs ...
Kiyarash
tapez le mot-clé propfull dans l'éditeur, il générera du code comme private data_type var_name; public data_type var_name1 {get; set;}
avinash kadu
Pouvez-vous ajouter une référence pour "propfull" (en modifiant votre réponse , pas ici dans les commentaires)?
Peter Mortensen
3

J'ai créé mon propre extrait qui ne fait qu'ajouter {get; set;}. Je l'ai fait juste parce que je trouve propTabmaladroit.

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

Avec cela, vous tapez votre PropType et PropName manuellement, puis tapez getTab, et il ajoutera le get set. Ce n'est rien de magique, mais comme j'ai tendance à taper d'abord mon modificateur d'accès, je peux aussi bien terminer le nom et le type.

bsayegh
la source
2

Dans Visual Studio Community Edition 2015, vous pouvez sélectionner tous les champs souhaités, puis appuyez sur Ctrl+ .pour générer automatiquement les propriétés.

Vous devez choisir si vous souhaitez utiliser la propriété au lieu du champ ou non.

Tito Leiva
la source
1

En plus de l'extrait 'prop' et des propriétés automatiques, il existe une option de refactorisation pour vous permettre de sélectionner un champ existant et de l'exposer via une propriété ( clic droit sur le champ → RefactorEncapsuler le champ ... ).

De plus, si vous n'aimez pas l'implémentation «prop», vous pouvez créer vos propres extraits. De plus, un outil de refactorisation tiers comme ReSharper vous offrira encore plus de fonctionnalités et facilitera la création d'extraits de code plus avancés. Je recommanderais ReSharper si vous pouvez vous le permettre.

Daniel
la source
Le premier lien redirige vers la documentation de Visual Studio 2005 Retired . Lequel des dix a- t-il fait référence? Vraisemblablement, il s'agit d'une description de l'utilisation des extraits de code dans Visual Studio.
Peter Mortensen
1

Dans Visual Studio 2019, sélectionnez vos propriétés comme ceci:

entrez la description de l'image ici

Puis appuyez Ctrl+r puis appuyez surCtrl+e

Une boîte de dialogue apparaîtra vous montrant l'aperçu des modifications qui vont être apportées à votre code. Si tout semble bon (ce qu'il fera surtout), appuyez sur OK.

Adil Malik
la source
0

Je n'ai plus Visual Studio installé sur ma machine (et j'utilise Linux), mais je me souviens qu'il y avait un assistant caché quelque part dans l'un des menus qui donnait accès à un constructeur de classe.

Avec cet assistant, vous pouvez définir tous les détails de vos classes, y compris les méthodes et les attributs. Si je me souviens bien, il y avait une option par laquelle vous pouviez demander à Visual Studio de créer automatiquement les setters et les getters pour vous.

Je sais que c'est assez vague, mais vérifiez-le et vous le trouverez peut-être.

Mario Marinato
la source
0

Entrez la description de l'image ici

Au nom de l'outil Visual Studio, nous pouvons facilement générer des propriétés C # à l'aide d'un outil en ligne appelé générateur de propriétés C #.

DotNetLover
la source
3
fonctionnalité inutile
SeReGa
0

Pour obtenir l'extension, appuyez simplement sur ( Ctrl+ Shift+ X) et installez getter setter ....

Après cela, sélectionnez simplement votre variable et faites un clic droit. Aller à la palette de commandes ...

Et tapez getter ... Il vous proposera de générer des méthodes get et set. Cliquez dessus ...

sejpalsinh jadeja
la source
1
Que voulez-vous dire par "First get Extension" ?
Peter Mortensen
Dans quel contexte faut-il appuyer sur Ctrl + Maj + X?
Peter Mortensen
-4

Vous appuyez simplement sur Alt+Ins dans Android Studio.

Après avoir déclaré des variables, vous obtiendrez les getters et setters dans le code généré.

A_R Rehman
la source
Personne n'a posé de questions sur Android Studio
warzone_fz
La question est "Comment pouvons-nous générer des getters et des setters dans Visual Studio?" . Visual Studio n'est pas identique à Android Studio .
Peter Mortensen