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

Definition

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

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

Parameter

Name
String

Erforderlich. Der Name der neuen Funktion.

Location
Object

Erforderlich. Der Pfad und Dateiname für die neue Funktionsdefinition. 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 AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) fehl.

Kind
vsCMFunction

Erforderlich. Die- vsCMFunction Konstante, die den Typ der Funktion angibt, z. b., ob es sich bei der Funktion um eine Eigenschaft oder eine Methode handelt.

Type
Object

Erforderlich. Eine vsCMTypeRef-Konstante, die den Rückgabedatentyp der Funktion angibt. Dies kann ein CodeTypeRef-Objekt, eine vsCMTypeRef-Konstante oder ein vollqualifizierter Typname sein.

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 AddFunction(String, Object, vsCMFunction, 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.

Access
vsCMAccess

(Optional) Eine vsCMAccess-Konstante.

Gibt zurück

CodeFunction

Ein CodeFunction-Objekt.

Attribute

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

Hinweise

Der folgende Code fügt mithilfe von vsCMFunction . vsCMFunctionOperator einen Überladungs Operator hinzu.

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 dieser Instanz müssen Sie den Namen der Funktion, die überladen werden soll (in diesem Fall "SomeFunction"), im-aufrufungs Operator explizit angeben AddFunction , nicht nur den Überladungs Operator selbst.

Wenn Sie den obigen Code als Beispiel verwenden, funktioniert cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...) nicht. Stattdessen müssen Sie cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)

Nur Visual C++ implementiert AddFunction , da c#, Visual Basic und j# keine Funktionen der obersten Ebene zulassen.

Native systemeigene Visual C++ erfordert die durch Doppelpunkte getrennte (::) Format für die voll qualifizierten Typnamen.

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