Metodo CodeModel.AddFunction
Crea un nuovo costrutto di codice di una funzione e inserisce il codice nella posizione corretta.
Spazio dei nomi: EnvDTE
Assembly: EnvDTE (in EnvDTE.dll)
Sintassi
'Dichiarazione
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
Parametri
- Name
Tipo: System.String
Obbligatorio.Il nome della nuova funzione.
- Location
Tipo: System.Object
Obbligatorio.Percorso e nome file per la definizione della nuova funzione.A seconda del linguaggio, il nome file può essere relativo o assoluto rispetto al file di progetto.Se non ne costituisce già un elemento, il file viene aggiunto al progetto.Se non è possibile creare il file e aggiungerlo al progetto, AddFunction avrà esito negativo.
- Kind
Tipo: EnvDTE.vsCMFunction
Obbligatorio.Costante vsCMFunction che indica il tipo di funzione, ad esempio se la funzione è una routine property-get o un metodo.
- Type
Tipo: System.Object
Obbligatorio.Costante vsCMTypeRef che indica il tipo di dati restituito dalla funzione.Può trattarsi di un oggetto CodeTypeRef, di una costante vsCMTypeRef o di un nome di tipo completo.
- Position
Tipo: System.Object
Facoltativo.Valore predefinito = 0.Elemento di codice dopo il quale deve essere aggiunto il nuovo elemento.Se il valore corrisponde a CodeElement, il nuovo elemento verrà aggiunto immediatamente dopo.
Se il valore è un tipo di dati Long, il metodo AddFunction indicherà l'elemento dopo il quale deve essere aggiunto il nuovo elemento.
Poiché negli insiemi il conteggio inizia da 1, il valore 0 indica che il nuovo elemento deve essere inserito all'inizio dell'insieme.Il valore -1 indica che l'elemento deve essere inserito alla fine.
- Access
Tipo: EnvDTE.vsCMAccess
Facoltativo.Costante vsCMAccess.
Valore restituito
Tipo: EnvDTE.CodeFunction
Un oggetto CodeFunction.
Note
Nell'esempio di codice riportato di seguito viene aggiunto un operatore di overload utilizzando vsCMFunction.vsCMFunctionOperator.
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 questa istanza è necessario specificare in modo esplicito il nome della funzione che si desidera sottoporre a overload (in questo caso "someFunction") nella chiamata al metodo AddFunction e non solo l'operatore di overload.
Nell'esempio di codice precedente, cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...) non funziona. È necessario infatti utilizzare cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)
Solo Visual C++ implementa il metodo AddFunction, perché C#, Visual Basic e J# non consentono di utilizzare funzioni di primo livello.
Il linguaggio nativo Visual C++ richiede il formato separato dai due punti (::) per i nomi di tipo completi.
Nota
I valori degli elementi del modello di codice, quali classi, strutture, funzioni, attributi, delegati e così via, possono non essere deterministici dopo alcuni tipi di modifiche. Ciò significa che non si può fare affidamento sulla stabilità di tali valori. Per ulteriori informazioni, vedere la sezione Possibile modifica dei valori degli elementi del modello di codice in Individuazione di codice mediante il modello di codice (Visual Basic).
Esempi
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);
}
}
Sicurezza di .NET Framework
- Attendibilità totale per il chiamante immediato. Impossibile utilizzare questo membro in codice parzialmente attendibile. Per ulteriori informazioni, vedere Utilizzo di librerie da codice parzialmente attendibile.
Vedere anche
Riferimenti
Altre risorse
Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione
Individuazione di codice mediante il modello di codice (Visual Basic)
Individuazione di codice mediante il modello di codice (Visual C#)