CodeClass2.AddImplementedInterface(Object, Object) 方法

定义

向继承对象列表添加接口。

EnvDTE::CodeInterface AddImplementedInterface(winrt::Windows::Foundation::IInspectable const & Base, winrt::Windows::Foundation::IInspectable const & Position);
[System.Runtime.InteropServices.DispId(63)]
public EnvDTE.CodeInterface AddImplementedInterface (object Base, object Position);
[<System.Runtime.InteropServices.DispId(63)>]
abstract member AddImplementedInterface : obj * obj -> EnvDTE.CodeInterface
Public Function AddImplementedInterface (Base As Object, Optional Position As Object) As CodeInterface

参数

Base
Object

必需。 该类将实现的接口。 这可以是 CodeInterface 对象或完全限定的类型名称。

Position
Object

可选。 默认值 = 0。 将在其后添加新接口的代码元素。

如果值为 Long 数据类型,则 Position 指示在其后添加新元素的元素。

因为集合从 1 开始计数,所以传递 0 指示应将新元素放置在集合的开始处。 值为 -1 表示应将元素放在结尾处。

返回

CodeInterface

CodeInterface 对象。

实现

属性

示例

[Visual Basic]

Sub AddImplementedInterfaceExample(ByVal dte As DTE2)  
    ' Before running this example, open a code document from a project  
    ' and place the insertion point inside a class definition.  
    Try  
        ' Retrieve the CodeClass at the insertion point.  
        Dim sel As TextSelection = _  
            CType(dte.ActiveDocument.Selection, TextSelection)  
        Dim cls As CodeClass = _  
            CType(sel.ActivePoint.CodeElement( _  
            vsCMElement.vsCMElementClass), CodeClass)  
        Dim cm As CodeModel = _  
            cls.ProjectItem.ContainingProject.CodeModel  

        ' Add a new implemented interface to the class.  
        cls.AddImplementedInterface(ConvertFullName(cm, _  
            "System.IDisposable"))  
    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  

[C#]

public void AddImplementedInterfaceExample(DTE2 dte)  
{  
    // Before running this example, open a code document from a project  
    // and place the insertion point inside a class definition.  
    try  
    {  
        // Retrieve the CodeClass at the insertion point.  
        TextSelection sel =   
            (TextSelection)dte.ActiveDocument.Selection;  
        CodeClass cls =   
            (CodeClass)sel.ActivePoint.get_CodeElement(  
            vsCMElement.vsCMElementClass);  
        CodeModel cm = cls.ProjectItem.ContainingProject.CodeModel;  

        // Add a new implemented interface to the class.  
        cls.AddImplementedInterface(ConvertFullName(cm,   
            "System.IDisposable"), -1);  
    }  
    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;  
}  

注解

AddImplementedInterface 添加对对象实现的接口的引用 CodeClass2AddImplementedInterface 不插入接口成员的方法存根。

本机 Visual C++ 要求其完全限定类型名采用冒号分隔 (::) 格式。 所有其他语言支持句号分隔格式。

参数的正确性由代码模型后面的语言确定。

备注

在进行了某些类型的编辑之后,代码模型元素(例如类、结构、函数、特性、委托等)的值可能变为非确定性的,这意味着不能确定它们的值始终保持不变。 有关详细信息,请参阅 "代码模型元素值在 使用代码模型查找代码时 可能发生变化" (Visual Basic) "。

适用于