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


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

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

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

Синтаксис

'Декларация
Function AddStruct ( _
    Name As String, _
    Location As Object, _
    Position As Object, _
    Bases As Object, _
    ImplementedInterfaces As Object, _
    Access As vsCMAccess _
) As CodeStruct
CodeStruct AddStruct(
    string Name,
    Object Location,
    Object Position,
    Object Bases,
    Object ImplementedInterfaces,
    vsCMAccess Access
)
CodeStruct^ AddStruct(
    String^ Name, 
    Object^ Location, 
    Object^ Position, 
    Object^ Bases, 
    Object^ ImplementedInterfaces, 
    vsCMAccess Access
)
abstract AddStruct : 
        Name:string * 
        Location:Object * 
        Position:Object * 
        Bases:Object * 
        ImplementedInterfaces:Object * 
        Access:vsCMAccess -> CodeStruct 
function AddStruct(
    Name : String, 
    Location : Object, 
    Position : Object, 
    Bases : Object, 
    ImplementedInterfaces : Object, 
    Access : vsCMAccess
) : CodeStruct

Параметры

  • Name
    Тип: System.String
    Обязательный.Имя новой структуры.
  • Location
    Тип: System.Object
    Обязательный.Путь и имя файла для нового определения структуры.В зависимости от языка имя файла может быть либо относительным, либо абсолютным по отношению к файлу проекта.Файл добавляется к проекту, если он не является его частью.Если файл не может быть создан и добавлен к проекту, тогда AddStruct дает сбой.
  • Position
    Тип: System.Object
    Необязательный.Значение по умолчанию: 0Элемент кода, после которого добавляется новый элемент.Если значением является CodeElement, новый элемент добавляется непосредственно после него.
    Если значение имеет тип данных Long, AddStruct указывает, после какого элемента следует добавить новый элемент.
    Поскольку в коллекциях нумерация элементов начинается с 1, значение 0 означает, что новый элемент следует поместить в начало коллекции.Значение -1 означает, что элемент следует поместить в конец.
  • Bases
    Тип: System.Object
    Обязательный.Значение по умолчанию — Nothing.Переменная типа variant, содержащая массив типа SafeArray полностью уточненных имен типов или объектов CodeInterface, которые наследуются новым интерфейсом.
  • ImplementedInterfaces
    Тип: System.Object
    Обязательный.Значение по умолчанию — Nothing.Массив SafeArray полных имен типов или объектов CodeInterfaces, представляющих интерфейсы, которые новый класс обещает реализовать.

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

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

Реализации

CodeModel.AddStruct(String, Object, Object, Object, Object, vsCMAccess)

Заметки

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

Правильность аргументов определяется языком, на котором основана модель кода.

Примечание

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

Примеры

Sub AddStructExample(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

        ' Initialize the base classes array and the implemented 
        ' interfaces array.
        Dim bases() As Object = {ConvertFullName(cm, "System.Object")}
        Dim interfaces() As Object = { _
            ConvertFullName(cm, "System.IDisposable"), _
            ConvertFullName(cm, "System.IComparable") _
        }

        ' Create a new struct.
        cm.AddStruct("TestStruct", projItem.Name, , bases, interfaces)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

Function ConvertFullName(ByVal cm As CodeModel, _
    ByVal fullName As String) As String

    ' Convert a .NET type name into a C++ type name.
    If (cm.Language = CodeModelLanguageConstants.vsCMLanguageVC) Or _
        (cm.Language = CodeModelLanguageConstants.vsCMLanguageMC) Then
        Return fullName.Replace(".", "::")
    Else
        Return fullName
    End If

End Function
public void AddStructExample(DTE2 dte)
{
    // Before running this example, open a code document from 
    // a project.
    try
    {
        ProjectItem projItem = dte.ActiveDocument.ProjectItem;
        CodeModel cm = projItem.ContainingProject.CodeModel;

        // Initialize the base classes array and the implemented 
        // interfaces array.
        object[] bases = {ConvertFullName(cm, "System.Object")};
        object[] interfaces = {
        ConvertFullName(cm, "System.IDisposable"),
        ConvertFullName(cm, "System.IComparable")
        };

        // Create a new struct.
        cm.AddStruct("TestStruct", projItem.Name, -1, bases, 
            interfaces, vsCMAccess.vsCMAccessPublic);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

string ConvertFullName(CodeModel cm, string fullName)
{
    // Convert a .NET type name into a C++ type name.
    if ((cm.Language == CodeModelLanguageConstants.vsCMLanguageVC) || 
        (cm.Language == CodeModelLanguageConstants.vsCMLanguageMC))
        return fullName.Replace(".", "::");
    else
        return fullName;
}

Безопасность платформы .NET Framework

См. также

Ссылки

CodeModel2 Интерфейс

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

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

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

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

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

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