CodeClass2.RemoveBase(Object) 方法

定义

从基列表中删除对象。

public:
 void RemoveBase(System::Object ^ Element);
public:
 void RemoveBase(Platform::Object ^ Element);
void RemoveBase(winrt::Windows::Foundation::IInspectable const & Element);
[System.Runtime.InteropServices.DispId(41)]
public void RemoveBase (object Element);
[<System.Runtime.InteropServices.DispId(41)>]
abstract member RemoveBase : obj -> unit
Public Sub RemoveBase (Element As Object)

参数

Element
Object

必需。 CodeElement集合中的一个或的名称。

实现

属性

示例

[Visual Basic]

Sub RemoveBaseExample(ByVal dte As DTE2)  
    ' NOTE: This example requires a reference to the   
    '       System.Collections namespace.  

    ' 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)  

        If MsgBox("Remove all bases from " & cls.Name & "?", _  
            MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then  
            ' Remove every base except System.Object.  
            Dim bases As New ArrayList()  
            Dim base As CodeElement  
            For Each base In cls.Bases  
                If base.FullName <> ConvertFullName( _  
                    cls.ProjectItem.ContainingProject.CodeModel, _  
                    "System.Object") Then  
                    bases.Add(base)  
                End If  
            Next  

            For Each base In bases  
                cls.RemoveBase(base)  
            Next  
        End If  
    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 RemoveBaseExample(DTE2 dte)  
{  
    // NOTE: This example requires a reference to the   
    //       System.Collections namespace.  

    // 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);  

        if (MessageBox.Show("Remove all bases from " + cls.Name + "?",   
            "", MessageBoxButtons.YesNo) == DialogResult.Yes)  
        {  
            // Remove every base except System.Object.  
            ArrayList bases = new ArrayList();  

            foreach (CodeElement baseElement in cls.Bases)  
            {  
                if (baseElement.FullName != ConvertFullName(  
                    cls.ProjectItem.ContainingProject.CodeModel,   
                    "System.Object"))  
                    bases.Add(baseElement);  
            }  

            foreach (CodeElement baseElement in bases)  
                cls.RemoveBase(baseElement);  
        }  
    }  
    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;  
}  

注解

删除的元素可以是 CodeElement 集合中的对象或集合中唯一元素的名称。

备注

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

适用于