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


CodeModel.AddClass - метод

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

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

Синтаксис

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

Параметры

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

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

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

Заметки

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

Примечание

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

Примеры

Sub AddClassExample(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 class.
        cm.AddClass("TestClass", 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 AddClassExample(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 class.
        cm.AddClass("TestClass", 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

См. также

Ссылки

CodeModel Интерфейс

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

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

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

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

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