CodeModel.AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) Método

Definição

Cria uma nova construção de código de função e insere o código no local correto.

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

Parâmetros

Name
String

Obrigatórios. O nome da nova função.

Location
Object

Obrigatórios. O caminho e o nome do arquivo para a nova definição de função. Dependendo do idioma, o nome do arquivo é relativo ou absoluto ao arquivo do projeto. O arquivo será adicionado ao projeto se ele ainda não for um item de projeto. Se o arquivo não puder ser criado e adicionado ao projeto, o AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) falhará.

Kind
vsCMFunction

Obrigatórios. A vsCMFunction constante que indica o tipo de função, como se a função é uma propriedade-get ou um método.

Type
Object

Obrigatórios. Uma vsCMTypeRef constante que indica o tipo de dados que a função retorna. Pode ser um CodeTypeRef objeto, uma vsCMTypeRef constante ou um nome de tipo totalmente qualificado.

Position
Object

Opcional. Padrão = 0. O elemento de código depois do qual adicionar o novo elemento. Se o valor for a CodeElement , o novo elemento será adicionado imediatamente após ele.

Se o valor for um tipo de dados longo, AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) indicará o elemento depois do qual adicionar o novo elemento.

Como as coleções começam sua contagem em 1, passar 0 indica que o novo elemento deve ser colocado no início da coleção. Um valor de-1 significa que o elemento deve ser posicionado no final.

Access
vsCMAccess

Opcional. Uma constante vsCMAccess.

Retornos

CodeFunction

Um objeto CodeFunction.

Atributos

Exemplos

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

Comentários

O código a seguir adiciona um operador de sobrecarga usando 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

Nessa instância, você deve especificar explicitamente o nome da função que deseja sobrecarregar (nesse caso, "someFunction") na chamada para AddFunction , não apenas o operador de sobrecarga em si.

O uso do código acima como exemplo não cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...) funciona. Em vez disso, você deve usar cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)

Somente Visual C++ implementa AddFunction , porque C#, Visual Basic e J# não permitem funções de nível superior.

Visual C++ nativa nativo requer os dois-pontos separados por vírgula (::) formato para seus nomes de tipo totalmente qualificados.

Observação

Os valores dos elementos de modelo de código, como classes, structs, funções, atributos, delegados e assim por diante, podem ser não determinísticos depois de fazer determinados tipos de edições, o que significa que seus valores não podem ser dependentes para sempre permanecerem os mesmos. Para obter mais informações, consulte os valores de elemento de modelo de código de seção podem ser alterados na descoberta de código usando o modelo de código (Visual Basic).

Aplica-se a