Partager via


CodeModel2.AddStruct, méthode

Crée une construction de code de structure et insère le code à l'emplacement approprié.

Espace de noms :  EnvDTE80
Assembly :  EnvDTE80 (dans EnvDTE80.dll)

Syntaxe

'Déclaration
Function AddStruct ( _
    Name As String, _
    Location As Object, _
    Position As Object, _
    Bases As Object, _
    ImplementedInterfaces As Object, _
    Access As vsCMAccess _
) As CodeStruct
CodeStruct AddStruct(
    string Name,
    Object Location,
    Object Position,
    Object Bases,
    Object ImplementedInterfaces,
    vsCMAccess Access
)
CodeStruct^ AddStruct(
    String^ Name, 
    Object^ Location, 
    Object^ Position, 
    Object^ Bases, 
    Object^ ImplementedInterfaces, 
    vsCMAccess Access
)
abstract AddStruct : 
        Name:string * 
        Location:Object * 
        Position:Object * 
        Bases:Object * 
        ImplementedInterfaces:Object * 
        Access:vsCMAccess -> CodeStruct
function AddStruct(
    Name : String, 
    Location : Object, 
    Position : Object, 
    Bases : Object, 
    ImplementedInterfaces : Object, 
    Access : vsCMAccess
) : CodeStruct

Paramètres

  • Name
    Type : String

    Obligatoire. Nom de la nouvelle structure.

  • Location
    Type : Object

    Obligatoire. Chemin d'accès et nom de fichier de la nouvelle définition de structure. Selon le langage, le nom de fichier est relatif ou absolu par rapport au fichier projet. Le fichier est ajouté au projet s'il n'est pas déjà un élément de projet. Si vous ne pouvez pas créer et ajouter le fichier au projet, la méthode AddStruct échoue.

  • Position
    Type : Object

    Optionnel. Valeur par défaut = 0. Élément de code après lequel le nouvel élément doit être ajouté. Si la valeur est CodeElement, le nouvel élément est ajouté directement après.

    Si la valeur est un type de données Long, AddStruct indique l'élément après lequel le nouvel élément doit être ajouté.

    Comme la comptabilisation des collections commence à 1, passer la valeur 0 indique que le nouvel élément doit être placé au début de la collection. La valeur -1 signifie que l'élément doit être placé à la fin.

  • Bases
    Type : Object

    Obligatoire. La valeur par défaut est Nothing Variant qui contient un SafeArray de noms de types qualifiés complets ou d'objets CodeInterface dont dérive la nouvelle interface.

  • ImplementedInterfaces
    Type : Object

    Obligatoire. La valeur par défaut est Nothing SafeArray de noms de types qualifiés complets ou de CodeInterfaces représentant les interfaces que la nouvelle classe promet d'implémenter.

  • Access
    Type : vsCMAccess

    Optionnel. Constante vsCMAccess.

Valeur de retour

Type : CodeStruct
Objet CodeStruct.

Notes

Le code Visual C++ natif nécessite le format séparé par deux-points (::) pour ses noms de types qualifiés complets. Tous les autres langages prennent en charge le format séparé par des points.

L'exactitude des arguments est déterminée par le langage, au-delà du modèle de code.

Notes

Les valeurs d'éléments de modèle de code, tels que des classes, des structures, des fonctions, des attributs, des délégués, etc., peuvent être non déterminables après certains types de modifications, ce qui signifie qu'il n'est pas certain que leurs valeurs resteront inchangées.Pour plus d'informations, consultez la section Les valeurs d'élément de modèle de code peuvent être modifiées de la rubrique Découverte de code à l'aide du modèle de code (Visual Basic).

Exemples

Sub AddStructExample(ByVal dte As DTE2)

    ' Before running this example, open a code document from a project.
    Try
        Dim projItem As ProjectItem = dte.ActiveDocument.ProjectItem
        Dim cm As CodeModel = projItem.ContainingProject.CodeModel

        ' Initialize the base classes array and the implemented 
        ' interfaces array.
        Dim bases() As Object = {ConvertFullName(cm, "System.Object")}
        Dim interfaces() As Object = { _
            ConvertFullName(cm, "System.IDisposable"), _
            ConvertFullName(cm, "System.IComparable") _
        }

        ' Create a new struct.
        cm.AddStruct("TestStruct", projItem.Name, , bases, interfaces)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

Function ConvertFullName(ByVal cm As CodeModel, _
    ByVal fullName As String) As String

    ' Convert a .NET type name into a C++ type name.
    If (cm.Language = CodeModelLanguageConstants.vsCMLanguageVC) Or _
        (cm.Language = CodeModelLanguageConstants.vsCMLanguageMC) Then
        Return fullName.Replace(".", "::")
    Else
        Return fullName
    End If

End Function
public void AddStructExample(DTE2 dte)
{
    // Before running this example, open a code document from 
    // a project.
    try
    {
        ProjectItem projItem = dte.ActiveDocument.ProjectItem;
        CodeModel cm = projItem.ContainingProject.CodeModel;

        // Initialize the base classes array and the implemented 
        // interfaces array.
        object[] bases = {ConvertFullName(cm, "System.Object")};
        object[] interfaces = {
        ConvertFullName(cm, "System.IDisposable"),
        ConvertFullName(cm, "System.IComparable")
        };

        // Create a new struct.
        cm.AddStruct("TestStruct", projItem.Name, -1, bases, 
            interfaces, vsCMAccess.vsCMAccessPublic);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

string ConvertFullName(CodeModel cm, string fullName)
{
    // Convert a .NET type name into a C++ type name.
    if ((cm.Language == CodeModelLanguageConstants.vsCMLanguageVC) || 
        (cm.Language == CodeModelLanguageConstants.vsCMLanguageMC))
        return fullName.Replace(".", "::");
    else
        return fullName;
}

Sécurité .NET Framework

Voir aussi

Référence

CodeModel2 Interface

EnvDTE80, espace de noms

Autres ressources

Comment : compiler et exécuter les exemples de code du modèle objet Automation

Découverte de code à l'aide du modèle de code (Visual Basic)

Découverte de code à l'aide du modèle de code (Visual C#)