CodeModel.AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает новую конструкцию кода функции и вставляет код в нужное место.
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
Параметры
- Name
- String
Обязательный. Имя новой функции.
- Location
- Object
Обязательный. Путь и имя файла для нового определения функции. В зависимости от языка имя файла может быть либо относительным, либо абсолютным по отношению к файлу проекта. Файл добавляется к проекту, если он не является его частью. Если файл не может быть создан и добавлен к проекту, метод AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) дает сбой.
- Kind
- vsCMFunction
Обязательный. Константа vsCMFunction, указывающая тип функции, например является ли она функцией, получающей свойство или методом.
- Type
- Object
Обязательный. Константа vsCMTypeRef, указывающая тип данных, возвращаемых функцией. Это может быть объект CodeTypeRef, константа vsCMTypeRef или полное имя типа.
- Position
- Object
Необязательный параметр. По умолчанию равно 0. Элемент кода, после которого добавляется новый элемент. Если значением является CodeElement, новый элемент добавляется непосредственно после него.
Если значение имеет тип данных Long, AddFunction(String, Object, vsCMFunction, Object, Object, vsCMAccess) указывает, после какого элемента следует добавить новый элемент.
Поскольку в коллекциях нумерация элементов начинается с 1, значение 0 означает, что новый элемент следует поместить в начало коллекции. Значение -1 означает, что элемент следует поместить в конец.
- Access
- vsCMAccess
Необязательный параметр. Константа vsCMAccess.
Возвращаемое значение
Объект CodeFunction.
- Атрибуты
Примеры
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);
}
}
Комментарии
Следующий код добавляет оператор перегрузки с помощью vsCMFunction . вскмфунктионоператор.
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
В этом экземпляре необходимо явно указать имя функции, которую требуется перегрузить (в данном случае "Сомефунктион") в вызове AddFunction , а не только сам оператор перегрузки.
Использование приведенного выше кода в качестве примера cc.AddFunction("+", vsCMFunction.vsCMFunctionOperator,...) не работает. Вместо этого следует использовать cc.AddFunction("someFunction +", vsCMFunction.vsCMFunctionFunction,...)
Только Visual C++ реализует AddFunction , поскольку C#, Visual Basic и J# не поддерживают функции верхнего уровня.
Машинный машинный код Visual C++ требует использования разделителей в виде двоеточия (::) Форматирование полных имен типов.
Примечание
Значения элементов модели кода, таких как классы, структуры, функции, атрибуты, делегаты и другие, после внесения некоторых изменений могут оказаться недетерминированными, другими словами, нельзя рассчитывать, что их значения будут всегда оставаться одинаковыми. Дополнительные сведения см. в разделе значения элементов модели кода могут изменяться при обнаружении кода с помощью модели кода (Visual Basic).