FileCodeModel.AddInterface(String, Object, Object, vsCMAccess) Метод

Определение

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

EnvDTE::CodeInterface AddInterface(std::wstring const & Name, winrt::Windows::Foundation::IInspectable const & Position, winrt::Windows::Foundation::IInspectable const & Bases, EnvDTE::vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[System.Runtime.InteropServices.DispId(9)]
public EnvDTE.CodeInterface AddInterface (string Name, object Position, object Bases, EnvDTE.vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[<System.Runtime.InteropServices.DispId(9)>]
abstract member AddInterface : string * obj * obj * EnvDTE.vsCMAccess -> EnvDTE.CodeInterface
Public Function AddInterface (Name As String, Optional Position As Object, Optional Bases As Object, Optional Access As vsCMAccess = EnvDTE.vsCMAccess.vsCMAccessDefault) As CodeInterface

Параметры

Name
String

Обязательный. Имя нового интерфейса.

Position
Object

Необязательный параметр. По умолчанию равно 0. Элемент кода, после которого добавляется новый элемент. Если значением является CodeElement, новый элемент добавляется непосредственно после него.

Если значение имеет тип данных Long, AddInterface(String, Object, Object, vsCMAccess) указывает, после какого элемента следует добавить новый элемент.

Поскольку в коллекциях нумерация элементов начинается с 1, значение 0 означает, что новый элемент следует поместить в начало коллекции. Значение -1 означает, что элемент следует поместить в конец.

Bases
Object

Необязательный параметр. Значение по умолчанию — Nothing. Вариант, содержащий массив SafeArray полных имен типов или объектов, CodeInterface от которых наследуется новый интерфейс.

Access
vsCMAccess

Необязательный параметр. Константа vsCMAccess.

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

CodeInterface

Объект CodeInterface.

Атрибуты

Примеры

Sub AddInterfaceExample2(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 interfaces array.  
        Dim bases() As Object = { _  
            ConvertFullName(cm, "System.IDisposable"), _  
            ConvertFullName(cm, "System.IComparable") _  
       }  

        ' Create a new class.  
        projItem.FileCodeModel.AddInterface("TestInterface", , bases)  
    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 AddInterfaceExample2(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 interfaces array.  
        object[] bases = {  
        ConvertFullName(cm, "System.IDisposable"),   
        ConvertFullName(cm, "System.IComparable")  
        };  

        // Create a new class.  
        projItem.FileCodeModel.AddInterface("TestInterface", -1, bases,   
            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;  
}  

Комментарии

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

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

Применяется к