FileCodeModel.AddInterface(String, Object, Object, vsCMAccess) Método

Definição

Cria uma nova construção de código de interface e insere o código no local correto.

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

Parâmetros

Name
String

Obrigatórios. O nome da nova interface.

Position
Object

Opcional. Padrão = 0. O elemento de código depois do qual adicionar o novo elemento. Se o valor for a CodeElement , o novo elemento será adicionado imediatamente após ele.

Se o valor for um tipo de dados longo, AddInterface(String, Object, Object, vsCMAccess) indicará o elemento depois do qual adicionar o novo elemento.

Como as coleções começam sua contagem em 1, passar 0 indica que o novo elemento deve ser colocado no início da coleção. Um valor de-1 significa que o elemento deve ser posicionado no final.

Bases
Object

Opcional. O valor padrão é Nothing. Uma variante que contém um SafeArray de nomes de tipo totalmente qualificados ou CodeInterface objetos dos quais a nova interface deriva.

Access
vsCMAccess

Opcional. Uma constante vsCMAccess.

Retornos

CodeInterface

Um objeto CodeInterface.

Atributos

Exemplos

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;  
}  

Comentários

O Visual C++ requer os dois-pontos separados (::) formato para seus nomes de tipo totalmente qualificados. Todos os outros idiomas dão suporte ao formato separado por período.

A exatidão dos argumentos é determinada pelo idioma por trás do modelo de código.

Aplica-se a