Поделиться через


CodeModel2.AddFunction - метод (String, Object, vsCMFunction, Object, Object, vsCMAccess)

Создает новую конструкцию кода функции и вставляет код в нужное место.

Пространство имен:  EnvDTE80
Сборка:  EnvDTE80 (в EnvDTE80.dll)

Синтаксис

'Декларация
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

Параметры

  • Name
    Тип: System.String
    Обязательный.Имя новой функции.
  • Location
    Тип: System.Object
    Обязательный.Путь и имя файла для нового определения функции.В зависимости от языка имя файла может быть либо относительным, либо абсолютным по отношению к файлу проекта.Файл добавляется к проекту, если он не является его частью.Если файл не может быть создан и добавлен к проекту, тогда AddFunction дает сбой.
  • Kind
    Тип: EnvDTE.vsCMFunction
    Обязательный.Константа vsCMFunction, указывающая тип функции, например: является ли она функцией, получающей свойство, методом и т. д.
  • Type
    Тип: System.Object
    Обязательный.Константа vsCMTypeRef, указывающая тип данных, возвращаемых функцией.Это может быть объект CodeTypeRef, константа vsCMTypeRef или полное имя типа.
  • Position
    Тип: System.Object
    Необязательный.Значение по умолчанию: 0Элемент кода, после которого добавляется новый элемент.Если значением является CodeElement, новый элемент добавляется непосредственно после него.
    Если значение имеет тип данных Long, AddFunction указывает, после какого элемента следует добавить новый элемент.
    Поскольку в коллекциях нумерация элементов начинается с 1, значение 0 означает, что новый элемент следует поместить в начало коллекции.Значение -1 означает, что элемент следует поместить в конец.

Возвращаемое значение

Тип: EnvDTE.CodeFunction
Объект CodeFunction.

Реализации

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

Заметки

Можно добавить перегруженный оператор (с помощью 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

В этом случае необходимо явным образом указать имя функции, которую требуется перегрузить (в данном случае, "someFunction") в вызове AddFunction, а не только оператор, который ее перегружает. При использовании вышеприведенного кода в качестве примера

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

не работает. Следует использовать:

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

Только Visual C++ реализует данный метод, потому что C#, Visual Basic, и J# не позволяет определять функции на верхнем уровне.

Для полностью уточненных имен типов в Visual C++ необходимо использовать формат с разделителем в виде двух двоеточий (::).

Примечание

Значения элементов модели кода, таких как классы, структуры, функции, атрибуты, делегаты и т. п., после внесения некоторых изменений могут оказаться неопределенными, иными словами, нельзя рассчитывать, что их значения будут всегда оставаться одинаковыми.Дополнительные сведения см. в разделе "Значения элементов модели кода могут изменяться" раздела Практическое руководство. Поиск кода при помощи модели кода (Visual Basic).

Примеры

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

См. также

Ссылки

CodeModel2 Интерфейс

AddFunction - перегрузка

EnvDTE80 - пространство имен

Другие ресурсы

Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации

Практическое руководство. Поиск кода при помощи модели кода (Visual Basic)

Практическое руководство. Поиск кода при помощи модели кода (Visual C#)