Freigeben über


CodeClass2.AddStruct-Methode (String, Object, Object, Object, vsCMAccess)

Erstellt eine neue Struktur in der Klasse.

Namespace:  EnvDTE80
Assembly:  EnvDTE80 (in EnvDTE80.dll)

Syntax

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

Parameter

  • Name
    Typ: System.String
    Erforderlich.Der Name der neuen Struktur.
  • Position
    Typ: System.Object
    Optional.Standardwert = 0.Das Codeelement, hinter dem das neue Element hinzugefügt werden soll.
    Wenn der Wert ein Long-Datentyp ist, gibt die Position-Methode das Element an, hinter dem das neue Element hinzugefügt werden soll.
    Da die Zählung bei Auflistungen mit 1 beginnt, wird mit dem Wert 0 angegeben, dass das neue Element am Anfang der Auflistung eingefügt werden soll.Bei dem Wert -1 wird das Element am Ende eingefügt.
  • Bases
    Typ: System.Object
    Erforderlich.Der Standardwert lautet Nothing.Eine Variante, die ein SafeArray mit vollqualifizierten Typnamen oder CodeInterface-Objekte enthält, von dem bzw. denen die neue Struktur abgeleitet wird.
  • ImplementedInterfaces
    Typ: System.Object
    Erforderlich.Der Standardwert lautet Nothing.Ein SafeArray mit vollqualifizierten Typnamen oder CodeInterface-Objekten, die Schnittstellen darstellen, für die die neue Klasse eine Implementierung zusichert.

Rückgabewert

Typ: EnvDTE.CodeStruct
Ein CodeStruct-Objekt.

Hinweise

Im systemeigenen Visual C++ ist ein doppelter Doppelpunkt (::) als Trennzeichen für vollqualifizierte Typnamen erforderlich.Alle anderen Programmiersprachen unterstützen das durch Punkte getrennte Format.

Die Gültigkeit der Argumente wird durch die Sprache des Codemodells bestimmt.

HinweisHinweis

Die Werte von Codemodellelementen wie Klassen, Strukturen, Funktionen, Attributen, Delegaten usw. können nach bestimmten Bearbeitungsvorgängen nicht deterministisch sein, d. h., dass nicht mehr davon ausgegangen werden kann, dass ihre Werte immer unverändert bleiben.Weitere Informationen finden Sie im Abschnitt zum Änderungsverhalten von Codemodellelementwerten unter Ermitteln von Code über das Codemodell (Visual Basic).

Beispiele

[Visual Basic]

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

[C#]

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;
}

.NET Framework-Sicherheit

Siehe auch

Referenz

CodeClass2 Schnittstelle

AddStruct-Überladung

EnvDTE80-Namespace

Weitere Ressourcen

Gewusst wie: Kompilieren und Ausführen der Codebeispiele für das Automatisierungsobjektmodell

Ermitteln von Code über das Codemodell (Visual Basic)

Ermitteln von Code über das Codemodell (Visual C#)