Freigeben über


CodeModel.AddClass-Methode

Erstellt ein neues Klassencodekonstrukt und fügt den Code an der korrekten Position ein.

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

Syntax

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

Parameter

  • Name
    Typ: String

    Erforderlich. Der Name der Klasse.

  • Location
    Typ: Object

    Erforderlich. Der Pfad- und Dateiname für die neue Klassendefinition. Je nach Sprache wird der Dateiname entweder relativ oder absolut zur Projektdatei angegeben. Die Datei wird dem Projekt hinzugefügt, wenn sie nicht bereits als Projektelement vorhanden ist. Wenn die Datei nicht erstellt und dem Projekt hinzugefügt werden kann, schlägt AddClass fehl.

  • Position
    Typ: Object

    Optional. Standardwert = 0. Das Codeelement, hinter dem das neue Element hinzugefügt werden soll. Wenn der Wert ein CodeElement ist, wird das neue Element unmittelbar im Anschluss hinzugefügt.

    Wenn der Wert ein Long-Datentyp ist, gibt AddClass das Element an, nach 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 einem Wert von -1 wird das Element am Ende eingefügt.

  • Bases
    Typ: Object

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

  • ImplementedInterfaces
    Typ: Object

    Erforderlich. Standardwert = 0. Ein SafeArray mit vollqualifizierten Typnamen oder CodeInterface-Objekten, die jeweils eine Schnittstelle darstellen, für die die neue Klasse eine Implementierung zusichert.

Rückgabewert

Typ: EnvDTE.CodeClass
Ein CodeClass-Objekt.

Hinweise

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

Hinweis

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

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

.NET Framework-Sicherheit

Siehe auch

Referenz

CodeModel Schnittstelle

EnvDTE-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#)