Sdílet prostřednictvím


CodeModel2.AddFunction – metoda

Vytvoří nové konstrukce kód funkce a kód vloží do správného umístění.

Obor názvů:  EnvDTE80
Sestavení:  EnvDTE80 (v EnvDTE80.dll)

Syntaxe

'Deklarace
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

Parametry

  • Name
    Typ: String

    Povinné.Název nové funkce.

  • Location
    Typ: Object

    Povinné.Cesta a název pro nové definice funkce.V závislosti na jazyku název souboru je relativní nebo absolutní souboru projektu.Soubor je do projektu přidány, pokud již není položka projektu.Pokud nelze soubor vytvořen a přidán do projektu, pak AddFunction se nezdaří.

  • Kind
    Typ: vsCMFunction

    Povinné.vsCMFunction Konstanta určující typ funkce, například zda je funkce get vlastnosti, metody a tak dále.

  • Type
    Typ: Object

    Povinné.A vsCMTypeRef Konstanta určující typ dat, který vrátí.To může být CodeTypeRef objektu, vsCMTypeRef konstanta nebo zadejte úplný název.

  • Position
    Typ: Object

    Nepovinné.Výchozí nastavení = 0.Prvek kódu, po které chcete přidat nový prvek.Pokud je hodnota CodeElement, potom ihned po je přidán nový prvek.

    Pokud hodnota je typ dat Long, pak AddFunction určuje prvek, po které chcete přidat nový prvek.

    Protože kolekce zahájit jejich počet na 1, procházející 0 udává, že nový prvek by měl na začátku kolekce.Hodnota-1 znamená prvek umístit na konci.

  • Access
    Typ: vsCMAccess

    Nepovinné.A vsCMAccess konstantní.

Vrácená hodnota

Typ: CodeFunction
Objekt CodeFunction.

Poznámky

Můžete přidat operátor přetížením (pomocí vsCMFunctionOperator) jako v následujícím příkladu.

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

V tomto případě nutné explicitně zadat název chcete přetížit (v tomto příkladu "someFunction") ve volání funkce AddFunction, nejen sám provozovatel přetížení.Například pomocí výše uvedeného kódu

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

nefunguje.Místo toho použijte

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

Pouze Visual C++ implementuje tuto metodu, protože C# Visual Basic, a J# neumožňují funkce nejvyšší úrovně.

Nativní Visual C++ vyžaduje oddělené dvojtečky (::) formát pro jeho úplný zadejte jména.

[!POZNÁMKA]

Není deterministický může být po provedení určité typy úprav, což znamená, že jejich hodnoty nelze dovolávat vždy zůstat stejné hodnoty prvků modelu kód jako třídy, struktury, funkce, atributy, delegátů a tak dále.Další informace naleznete v části Změna hodnoty prvku modelu kódu Zjišťování kódu pomocí modelu kódu (Visual Basic).

Příklady

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

Zabezpečení rozhraní .NET Framework

Viz také

Referenční dokumentace

CodeModel2 Rozhraní

EnvDTE80 – obor názvů

Další zdroje

Postupy: Kompilace a spuštění příkladů kódu objektu automatizace

Zjišťování kódu pomocí modelu kódu (Visual Basic)

Zjišťování kódu pomocí modelu kódu (Visual C#)