Condividi tramite


Metodo CodeModel2.AddFunction (String, Object, vsCMFunction, Object, Object, vsCMAccess)

Crea un nuovo costrutto di codice di una funzione e inserisce il codice nella posizione corretta.

Spazio dei nomi:  EnvDTE80
Assembly:  EnvDTE80 (in EnvDTE80.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 si tratta di una funzione per il richiamo di proprietà, di un metodo e così via.
  • 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 è di tipo Long, 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 invece che l'elemento deve essere inserito alla fine.

Valore restituito

Tipo: EnvDTE.CodeFunction
Oggetto CodeFunction.

Implementa

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

Note

Come nell'esempio riportato di seguito, è possibile aggiungere un operatore di overload mediante 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 questo caso, non è sufficiente indicare l'operatore di overload, ma è necessario specificare in modo esplicito il nome della funzione di cui eseguire l'overload, in questo esempio "someFunction", nella chiamata a AddFunction. Utilizzando come esempio il codice riportato in precedenza,

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

non funziona. È necessario infatti utilizzare

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

Questo metodo è implementato solo in Visual C++ poiché in C#, Visual Basic e J# le funzioni di primo livello non sono consentite.

Il linguaggio Visual C++ nativo 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

Vedere anche

Riferimenti

CodeModel2 Interfaccia

Overload AddFunction

Spazio dei nomi EnvDTE80

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