CodeModel.AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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.