CodeModel.AddStruct(String, Object, Object, Object, Object, vsCMAccess) Methode

Definition

Erstellt ein neues Struktur-Codekonstrukt und fügt den Code am korrekten Ort ein.

EnvDTE::CodeStruct AddStruct(std::wstring const & Name, winrt::Windows::Foundation::IInspectable const & Location, winrt::Windows::Foundation::IInspectable const & Position, winrt::Windows::Foundation::IInspectable const & Bases, winrt::Windows::Foundation::IInspectable const & ImplementedInterfaces, EnvDTE::vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[System.Runtime.InteropServices.DispId(11)]
public EnvDTE.CodeStruct AddStruct (string Name, object Location, object Position, object Bases, object ImplementedInterfaces, EnvDTE.vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[<System.Runtime.InteropServices.DispId(11)>]
abstract member AddStruct : string * obj * obj * obj * obj * EnvDTE.vsCMAccess -> EnvDTE.CodeStruct
Public Function AddStruct (Name As String, Location As Object, Optional Position As Object, Optional Bases As Object, Optional ImplementedInterfaces As Object, Optional Access As vsCMAccess = EnvDTE.vsCMAccess.vsCMAccessDefault) As CodeStruct

Parameter

Name
String

Erforderlich. Der Name der neuen Struktur.

Location
Object

Erforderlich. Der Pfad und Dateiname für die neue Strukturdefinition. Je nach Sprache ist der Dateiname entweder relativ oder absolut zur Projektdatei. Die Datei wird zum Projekt hinzugefügt, wenn diese nicht bereits ein Projektelement ist. Wenn die Datei nicht erstellt und zum Projekt hinzugefügt werden kann, schlägt AddStruct(String, Object, Object, Object, Object, vsCMAccess) fehl.

Position
Object

(Optional) Standardwert = 0. Das Codeelement, nach dem das neue Element eingefügt werden soll. Wenn der Wert ein CodeElement ist, wird das neue Element direkt im Anschluss eingefügt.

Wenn der Wert ein Long-Datentyp ist, dann gibt AddStruct(String, Object, Object, Object, Object, vsCMAccess) das Element an, nach dem das neue Element eingefügt werden soll.

Da Auflistungen mit dem Index 1 beginnen, gibt ein Übergabewert von 0 an, dass das neue Element zu Anfang der Auflistung eingefügt werden soll. Der Wert-1 bedeutet, dass das Element am Ende platziert werden soll.

Bases
Object

Erforderlich. Der Standardwert ist Nothing. Diese Variante enthält ein SafeArray mit vollqualifizierten Typnamen oder CodeInterface-Objekten, von denen die neue Schnittstelle ableitet.

ImplementedInterfaces
Object

Erforderlich. Der Standardwert ist Nothing. Ein SafeArray mit voll qualifizierten Typnamen oder- CodeInterface Objekten, die Schnittstellen darstellen, die von der neuen Klasse implementiert werden müssen.

Access
vsCMAccess

(Optional) Eine vsCMAccess-Konstante.

Gibt zurück

CodeStruct

Ein CodeStruct-Objekt.

Attribute

Beispiele

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

Hinweise

Native systemeigene Visual C++ erfordert die durch Doppelpunkte getrennte (::) Format für die voll qualifizierten Typnamen. Alle anderen Sprachen unterstützen das Format mit Trennung durch Punkte.

Die Richtigkeit der Argumente hängt von der Sprache hinter dem Code Modell ab.

Hinweis

Die Werte von Codemodellelementen wie z. B. Klassen, Strukturen, Funktionen, Attributen Delegaten usw. sind nach bestimmten Änderungen unter Umständen nicht deterministisch, d. h. deren Werte bleiben nicht zuverlässig immer gleich. Weitere Informationen finden Sie im Abschnitt Code Modell Element-Werte können sich in ermitteln von Code mithilfe des Code Modells (Visual Basic)ändern.

Gilt für