CodeModel.AddFunction-Methode
Erstellt ein neues Funktionscodekonstrukt und fügt den Code an der korrekten Position ein.
Namespace: EnvDTE
Assembly: EnvDTE (in EnvDTE.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
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
)
abstract AddFunction :
Name:string *
Location:Object *
Kind:vsCMFunction *
Type:Object *
Position:Object *
Access:vsCMAccess -> CodeFunction
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, beispielsweise, ob die Funktion ein Property Get oder eine Methode ist.
- Type
Typ: System.Object
Erforderlich.Eine vsCMTypeRef-Konstante, die den von der Funktion zurückgegebenen Datentyp angibt.Dies kann ein CodeTypeRef-Objekt, eine vsCMTypeRef-Konstante oder ein vollqualifizierter Typname sein.
- 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, 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.
- Access
Typ: EnvDTE.vsCMAccess
Optional.Eine vsCMAccess-Konstante.
Rückgabewert
Typ: EnvDTE.CodeFunction
Ein CodeFunction-Objekt.
Hinweise
Im folgenden Code wird unter Verwendung von vsCMFunction.vsCMFunctionOperator ein Überladungsoperator hinzugefügt.
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 im Aufruf an AddFunction den Namen der zu überladenden Funktion (in diesem Fall "someFunction") und nicht nur den Überladungsoperator selbst explizit angeben.
cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...) funktioniert bei Verwendung des oben aufgeführten Codes beispielsweise nicht.Sie müssen stattdessen cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...) verwenden.
AddFunction wird nur in Visual C++ implementiert, da Funktionen auf oberster Ebene von C#, Visual Basic und J# nicht unterstützt werden.
Im systemeigenen 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);
}
}
.NET Framework-Sicherheit
- Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code.
Siehe auch
Referenz
Weitere Ressourcen
Gewusst wie: Kompilieren und Ausführen der Codebeispiele für das Automatisierungsobjektmodell