Générer à partir de l'utilisation

La fonctionnalité Générer à partir de l'utilisation vous permet d'utiliser des classes et des membres avant de les définir. Vous pouvez générer un stub pour une classe, un constructeur, une méthode, une propriété, un champ ou une énumération quelconque que vous souhaitez utiliser, mais que vous n'avez pas encore défini. Vous pouvez générer de nouveaux types et membres sans quitter votre emplacement actuel dans le code. Cela réduit l'interruption de votre workflow.

La fonctionnalité Générer à partir de l'utilisation prend en charge des styles de programmation tels que le développement par test initial.

Utilisation de la fonctionnalité Générer à partir de l'utilisation en C#

Une ligne ondulée apparaît sous chaque identificateur non défini. Lorsque vous placez le pointeur de la souris sur l'identificateur, un message d'erreur s'affiche dans une info-bulle.

Pour afficher les options appropriées, vous pouvez utiliser l'une des procédures suivantes :

  • Cliquez sur l'identificateur non défini. Un trait de soulignement court apparaît sous le caractère le plus à gauche. Placez le pointeur de la souris sur le trait de soulignement court ; une balise active (icône) apparaît. Cliquez sur la balise active.

  • Cliquez sur l'identificateur non défini, puis appuyez sur CTRL+. (point).

  • Cliquez avec le bouton droit sur l'identificateur non défini, puis cliquez sur Générer.

Les options qui apparaissent peuvent inclure les éléments suivants :

  • Générer le stub de propriété

  • Générer le stub de champ

  • Générer un stub de méthode

  • Générer la classe

  • Générer un nouveau type (pour une classe, un struct, une interface ou un enum)

Utilisation de la fonctionnalité Générer à partir de l'utilisation en Visual Basic

Une ligne ondulée apparaît sous chaque identificateur non défini et un trait de soulignement court apparaît sous le caractère situé le plus à droite. Lorsque vous placez le pointeur de la souris sur l'identificateur, un message d'erreur s'affiche dans une info-bulle.

Pour afficher les options appropriées, vous pouvez utiliser l'une des procédures suivantes :

  • Placez le pointeur de la souris sur l'identificateur non défini. Une balise active (icône) apparaît. Cliquez sur la balise active.

  • Cliquez sur l'identificateur non défini, puis appuyez sur CTRL+. (point).

  • Dans la fenêtre Liste d'erreurs, double-cliquez sur la ligne d'erreur correspondante.

Les options qui apparaissent peuvent inclure les éléments suivants :

  • Générer le stub de propriété

  • Générer le stub de champ

  • Générer un stub de méthode

  • Générer la classe

  • Générer l'interface

  • Générer un nouveau type (pour une classe, un enum, une structure, une interface, un délégué ou un module)

Génération d'un stub de propriété

Si le code référence une propriété non définie, cliquez sur Générer le stub de propriété. Le stub de propriété est généré dans la classe appropriée. Le type de retour de la propriété est déterminé à partir du contexte.

Par exemple, supposons que vous vouliez générer la propriété InstanceProperty à partir de l'instruction contenue dans le code suivant.

Dim cust As New Customer()
Dim city As String = cust.InstanceProperty
Customer cust = new Customer();
string city = cust.InstanceProperty;

Lorsque vous générez la propriété, le stub suivant est créé dans la classe Customer.

Property InstanceProperty() As String
public string InstanceProperty { get; set; }

Si une propriété est appelée sur un type et non une instance, le stub généré est une propriété statique (C#) ou une propriété partagée (Visual Basic).

Par exemple, imaginons que vous vouliez générer une propriété à partir de l'instruction suivante (en supposant que Customer soit un nom de classe).

Dim description As String = Customer.SharedProperty
string description = Customer.StaticProperty;

Lorsque vous générez la propriété, le stub suivant est créé dans la classe Customer.

Shared Property SharedProperty As String
public static string StaticProperty { get; set; }

Si une propriété est appelée sans qualification (référence à un membre du type actuel), le stub généré est statique si la propriété est appelée à partir d'une méthode statique. Sinon, il s'agit d'une propriété d'instance.

Par exemple, supposons que vous vouliez générer une propriété à partir de l'instruction suivante.

Dim title As String = UnqualifiedProperty
string title = UnqualifiedProperty;

Lorsque vous générez la propriété, le stub suivant est créé dans la classe actuelle.

Private Property UnqualifiedProperty() As String
public string UnqualifiedProperty { get; set; }

Génération d'un stub de méthode

Si le code référence une méthode non définie, cliquez sur Générer un stub de méthode. Le stub de méthode est généré dans la classe appropriée.

Le type de chaque paramètre et le type de retour sont déterminés à partir du contexte. Le type de l'objet est utilisé lorsque le type ne peut pas être déduit, par exemple dans le cas des types anonymes ou des variables locales typées implicitement (variables définies avec le mot clé var).

Le nom de chaque paramètre est dérivé des noms des arguments passés dans l'appel de méthode.

Par exemple, supposons que vous vouliez générer la méthode InstanceMethod à partir de l'instruction contenue dans le code suivant.

Dim cust As New Customer()
Dim itemNumber = 3
Dim itemName = "abc"
cust.InstanceMethod(itemNumber, itemName, 4)
Customer cust = new Customer();
int itemNumber = 3;
string itemName = "abc";
cust.InstanceMethod(itemNumber, itemName, 4);

Lorsque vous générez la méthode, le stub suivant est créé dans la classe appropriée.

Sub InstanceMethod(ByVal itemNumber As Integer, ByVal itemName As String, ByVal p3 As Integer)
    Throw New NotImplementedException
End Sub
internal void InstanceMethod(int itemNumber, string itemName, int p)
{
    throw new NotImplementedException();
}

Si une méthode est appelée sur un type et non sur une instance, le stub généré est une méthode statique (C#) ou une méthode partagée (Visual Basic).

Génération d'un stub de méthode pour un événement

En Visual Basic, vous pouvez générer une méthode de gestionnaire d'événements pour un événement référencé dans une AddHandler, instruction ou une RemoveHandler, instruction.

Par exemple, supposons que vous vouliez générer la méthode EventHandler à partir de l'une des instructions suivantes contenues dans le code.

AddHandler obj.Ev_Event, AddressOf EventHandler
RemoveHandler obj.Ev_Event, AddressOf EventHandler

Lorsque vous générez la méthode, le stub suivant est créé dans la classe actuelle.

Private Sub EventHandler()
    Throw New NotImplementedException
End Sub

Génération d'un stub de constructeur

Si le code référence un constructeur non défini, cliquez sur Générer le stub de constructeur. Le stub de constructeur est généré dans la classe appropriée. Le type de chaque paramètre est déterminé à partir du contexte.

Les noms des paramètres du constructeur sont examinés. Si la classe a des propriétés dont les noms correspondent à ces noms de paramètres, du code est fourni dans le constructeur pour stocker les valeurs d'argument de ces propriétés.

Par exemple, supposons que vous vouliez générer un constructeur pour la classe Example à partir de l'instruction contenue dans le code suivant.

Dim total As Long = 12
Dim exampleTest As New Example(5, total, Date.Now)
long total = 12;
Example exampleTest = new Example(5, total, System.DateTime.Now);

Lorsque vous générez le constructeur, les variables privées suivantes sont créées dans la classe Example, si elles ne sont pas déjà présentes.

Private _p1 As Integer
Private _total As Long
Private _p3 As Date
private int p;
private long total;
private DateTime dateTime;

Le stub de constructeur suivant est créé.

Sub New(ByVal p1 As Integer, ByVal total As Long, ByVal p3 As Date)
    ' TODO: Complete member initialization 
    _p1 = p1
    _total = total
    _p3 = p3
End Sub
public Example(int p, long total, DateTime dateTime)
{
    // TODO: Complete member initialization
    this.p = p;
    this.total = total;
    this.dateTime = dateTime;
}

Vous pouvez générer plusieurs constructeurs dans une classe. Un constructeur supplémentaire peut être généré si l'appel du constructeur possède un nombre différent d'arguments ou différents types d'arguments.

En Visual Basic, un constructeur peut également être généré lorsque vous générez une classe. Pour plus d'informations, consultez la section suivante de cette rubrique.

Génération d'une classe

Si le code référence une classe ou un type non défini, des choix apparaissent pour les options Générer la classe et Générer un nouveau type.

Si vous cliquez sur Générer la classe, un stub de classe vide est généré dans un nouveau fichier du projet. Le nouveau fichier s'ouvre dans l'éditeur de code (mais sans recevoir le focus). C'est la méthode la plus rapide pour créer un type de classe avec les modificateurs d'accès par défaut dans un nouveau fichier du projet actuel.

Par exemple, supposons que vous vouliez générer une classe à partir de l'instruction suivante.

Dim cust As Customer
Customer cust;

Lorsque vous générez la classe, le stub de classe suivant est créé dans un nouveau fichier du projet.

Class Customer

End Class
namespace CSharpWindowsApp
{
    class Customer
    {
    }
}

Vous pouvez également utiliser la commande Générer la classe lorsqu'une classe de base héritée n'est pas définie dans une définition de classe.

Génération d'une classe avec un constructeur

En Visual Basic, la classe générée inclut un constructeur, le cas échéant.

Par exemple, supposons que vous vouliez générer une classe à partir de l'instruction suivante.

Dim total = 3
Dim exampleTest As New Example(5, total, Date.Now) With {.Description = "book"}

Lorsque vous générez la classe, le stub de classe suivant est créé dans un nouveau fichier du projet. Le constructeur est généré dans la classe. Une propriété Description est créée pour l'initialiseur d'objet qui figure dans la clause With du code précédent.

Class Example
    Private _p3 As Date
    Private _total As Integer
    Private _p1 As Integer

    Sub New(ByVal p1 As Integer, ByVal total As Integer, ByVal p3 As Date)
        ' TODO: Complete member initialization 
        _p1 = p1
        _total = total
        _p3 = p3
    End Sub

    Property Description As String
End Class

Génération de nouveaux types avec des options supplémentaires

Si le code référence une classe, une interface, un enum, un struct (C#) ou une structure (Visual Basic) non définie, des choix apparaissent pour Générer la classe et Générer un nouveau type. Ces choix sont représentés dans les illustrations suivantes.

Visual Basic

Menu contextuel de balise active en Visual Basic

Visual C#

Menu contextuel de balise active en C#

Cliquez sur Générer un nouveau type pour ouvrir la boîte de dialogue Générer un nouveau type, qui vous permet de choisir un niveau d'accès, un genre, un emplacement de projet et un nom de fichier.

L'option Générer un nouveau type offre une flexibilité supplémentaire lorsque vous générez une classe. Si vous le souhaitez, vous pouvez mettre la classe dans un fichier existant, spécifier les modificateurs d'accès ou ajouter le nouveau fichier à un autre projet de la solution.

L'illustration suivante montre la boîte de dialogue Générer un nouveau type.

Boîte de dialogue Générer un nouveau type

Boîte de dialogue Générer un nouveau type

Le tableau suivant montre les choix disponibles dans la boîte de dialogue Générer un nouveau type.

Option

Choix pour C#

Choix pour Visual Basic

Accès

Par défaut, public, interne ou privé.

Par défaut, Friend ou public.

Genre

Classe, struct, interface ou enum.

Classe, structure, interface, enum, délégué ou module.

Emplacement du projet

Projet actuel ou autre projet dans la solution.

Projet actuel ou autre projet dans la solution.

Nom du fichier

Créer un nouveau fichier avec le nom de fichier ou Ajouter au fichier existant avec le nom de fichier.

Créer un nouveau fichier avec le nom de fichier ou Ajouter au fichier existant avec le nom de fichier.

Si le type est généré dans un nouveau fichier, celui-ci contient l'ensemble par défaut des directives using pour une classe générée via la boîte de dialogue Ajouter un nouvel élément.

Si le type est généré dans un autre projet de la solution, une directive using faisant référence à ce projet est ajoutée au fichier actif.

Génération d'un stub d'interface

Pour générer du code à partir d'une interface indéfinie, cliquez sur Générer un nouveau type. La boîte de dialogue Générer un nouveau type s'ouvre. Dans la liste Genre, cliquez sur interface. En Visual Basic, vous pouvez également cliquer sur Générer l'interface.

Par exemple, supposons que vous vouliez générer l'interface IAuto à partir de l'instruction contenue dans le code suivant.

Public Class Sedan : Implements IAuto
End Class
public class Sedan : IAuto
{
}

Lorsque vous générez l'interface, le stub suivant est créé.

Interface IAuto

End Interface
interface IAuto
{
}

Génération d'un stub de délégué

Pour générer du code à partir d'un délégué non défini en Visual Basic, cliquez sur Générer un nouveau type. La boîte de dialogue Générer un nouveau type s'ouvre. Dans la liste Genre, cliquez sur Délégué.

Par exemple, supposons que vous vouliez générer le délégué MathOperator à partir de l'instruction contenue dans le code suivant.

Dim delInstance As New MathOperator(AddressOf AddNumbers)

Lorsque vous générez le délégué, le stub suivant est créé.

Delegate Sub MathOperator()

Mode de suggestion IntelliSense

IntelliSense offre deux modes de saisie des instructions : le mode de saisie semi-automatique et le mode de saisie par suggestion. Servez-vous du mode de suggestion pour les situations où les classes et les membres sont utilisés avant d'être définis.

En mode de saisie par suggestion IntelliSense, lorsque vous tapez dans l'éditeur de code puis validez l'entrée, le texte que vous avez tapé est inséré dans le code. Lorsque vous validez une entrée en mode de saisie semi-automatique IntelliSense, l'entrée sélectionnée figurant dans la liste des membres est insérée dans le code.

Après avoir ouvert une fenêtre IntelliSense, vous pouvez appuyer sur CTRL+ALT+ESPACE pour passer du mode de saisie semi-automatique au mode de saisie par suggestion.

Pour plus d'informations, consultez Liste des membres.

Voir aussi

Tâches

Procédure pas à pas : prise en charge du développement basé d'abord sur les tests avec la fonctionnalité Générer à partir de l'utilisation

Autres ressources

Assistance au codage

Génération de code automatique