CodeModel2.AddClass(String, Object, Object, Object, Object, vsCMAccess) Methode

Definition

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

EnvDTE::CodeClass AddClass(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(7)]
public EnvDTE.CodeClass AddClass (string Name, object Location, object Position, object Bases, object ImplementedInterfaces, EnvDTE.vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[<System.Runtime.InteropServices.DispId(7)>]
abstract member AddClass : string * obj * obj * obj * obj * EnvDTE.vsCMAccess -> EnvDTE.CodeClass
Public Function AddClass (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 CodeClass

Parameter

Name
String

Erforderlich. Der Name der Klasse.

Location
Object

Erforderlich. Der vollständige Pfad und Dateiname für die neue Klassendefinition. 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 AddClass(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 AddClass(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 eingefügt werden soll.

Bases
Object

Erforderlich. Standardwert = 0. Ein SafeArray mit vollqualifizierten Typnamen oder CodeClass-Objekten, deren Implementierungen die neue Klasse erbt.

ImplementedInterfaces
Object

Erforderlich. Standardwert = 0. Ein SafeArray mit vollqualifizierten Typnamen oder CodeInterface-Objekten, die je eine Schnittstelle darstellen, deren Implementierung die neue Klasse zusagt.

Access
vsCMAccess

(Optional) Eine vsCMAccess-Konstante.

Gibt zurück

CodeClass

Ein CodeClass-Objekt.

Implementiert

Attribute

Beispiele

Sub AddClassExample(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 class.  
        cm.AddClass("TestClass", 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 AddClassExample(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 class.  
        cm.AddClass("TestClass", 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

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.

Gilt für