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.

Réponses:



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.


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


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.


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.


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


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.


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 :-)


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.


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.


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.


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.


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.


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.



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


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é.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.