FileCodeModel2.AddInterface(String, Object, Object, vsCMAccess) Method

Definition

Creates a new interface code construct and inserts the code in the correct location.

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

Parameters

Name
String

Required. The name of the new interface.

Position
Object

Optional. Default = 0. The code element after which to add the new element. If the value is a CodeElement, then the new element is added immediately after it.

If the value is a Long data type, then AddInterface(String, Object, Object, vsCMAccess) indicates the element after which to add the new element.

Because collections begin their count at 1, passing 0 indicates that the new element should be placed at the beginning of the collection. A value of -1 means the element should be placed at the end.

Bases
Object

Optional. Default value is Nothing. A variant that holds a SafeArray of fully qualified type names or CodeInterface objects from which the new interface derives.

Access
vsCMAccess

Optional. A vsCMAccess constant.

Returns

A CodeInterface object.

Implements

Attributes

Examples

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

Remarks

Visual C++ requires the colon-separated (::) format for its fully qualified type names. All other languages support the period-separated format.

The correctness of the arguments is determined by the language behind the code model.

Applies to