Sdílet prostřednictvím


CodeModel2.AddFunction-Methode (String, Object, vsCMFunction, Object, Object, vsCMAccess)

Aktualisiert: November 2007

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

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

Syntax

'Declaration
Function AddFunction ( _
    Name As String, _
    Location As Object, _
    Kind As vsCMFunction, _
    Type As Object, _
    Position As Object, _
    Access As vsCMAccess _
) As CodeFunction
'Usage
Dim instance As CodeModel2
Dim Name As String
Dim Location As Object
Dim Kind As vsCMFunction
Dim Type As Object
Dim Position As Object
Dim Access As vsCMAccess
Dim returnValue As CodeFunction

returnValue = instance.AddFunction(Name, _
    Location, Kind, Type, Position, Access)
CodeFunction AddFunction(
    string Name,
    Object Location,
    vsCMFunction Kind,
    Object Type,
    Object Position,
    vsCMAccess Access
)
CodeFunction^ AddFunction(
    String^ Name, 
    Object^ Location, 
    vsCMFunction Kind, 
    Object^ Type, 
    Object^ Position, 
    vsCMAccess Access
)
function AddFunction(
    Name : String, 
    Location : Object, 
    Kind : vsCMFunction, 
    Type : Object, 
    Position : Object, 
    Access : vsCMAccess
) : CodeFunction

Parameter

  • Name
    Typ: System.String

    Erforderlich. Der Name der neuen Funktion.

  • Location
    Typ: System.Object

    Erforderlich. Der Pfad- und Dateiname für die neue Funktionsdefinition. 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 AddFunction fehl.

  • Kind
    Typ: EnvDTE.vsCMFunction

    Erforderlich. Die vsCMFunction-Konstante, die den Typ der Funktion angibt, z. B. ob die Funktion eine Eigenschaft abruft, eine Methode darstellt usw.

  • Position
    Typ: System.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 AddFunction 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.

Rückgabewert

Typ: EnvDTE.CodeFunction

Ein CodeFunction-Objekt.

Implementiert

CodeModel.AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess)

Hinweise

Sie können einen Überladungsoperator (unter Verwendung von vsCMFunctionOperator) wie im folgenden Beispiel hinzufügen.

Sub testAddOverloadOperatorCPP()

Dim fcm As FileCodeModel = _

DTE.ActiveDocument.ProjectItem.FileCodeModel

Dim cc As CodeClass = fcm.CodeElements.Item("someClassName")

cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator, _

vsCMTypeRef.vsCMTypeRefInt)

'cc.AddFunction("someFunction +", _

vsCMFunction.vsCMFunctionFunction, vsCMTypeRef.vsCMTypeRefInt)

End Sub

In diesem Fall müssen Sie explizit den Namen der Funktion angeben, die Sie im Aufruf von AddFunction überladen möchten (in diesem Beispiel "someFunction"). Die Angabe des Überladungsoperators selbst reicht nicht aus. Wenn Sie den oben angegebenen Code als Beispiel verwenden, funktioniert

cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...)

nicht. Sie müssen stattdessen Folgendes verwenden:

cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)

Diese Methode wird nur von Visual C++ implementiert, da C#, Visual Basic und J# keine Funktionen auf oberster Ebene zulassen.

Im systemeigenen Programm Visual C++ ist ein doppelter Doppelpunkt (::) als Trennzeichen für vollqualifizierte Typnamen erforderlich.

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 AddFunctionExample(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

        ' Create a new function.
        cm.AddFunction("TestFunction", projItem.Name, _
            vsCMFunction.vsCMFunctionFunction, _
            vsCMTypeRef.vsCMTypeRefInt)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

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

        // Create a new function.
        cm.AddFunction("TestFunction", projItem.Name, _
            vsCMFunction.vsCMFunctionFunction, _
            vsCMTypeRef.vsCMTypeRefInt, -1, _
            vsCMAccess.vsCMAccessDefault);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

Berechtigungen

Siehe auch

Referenz

CodeModel2-Schnittstelle

CodeModel2-Member

AddFunction-Ü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#)