Compartir a través de


CodeClass2.RemoveBase (Método)

Quita un objeto de la lista de bases.

Espacio de nombres:  EnvDTE80
Ensamblado:  EnvDTE80 (en EnvDTE80.dll)

Sintaxis

'Declaración
Sub RemoveBase ( _
    Element As Object _
)
void RemoveBase(
    Object Element
)
void RemoveBase(
    Object^ Element
)
abstract RemoveBase : 
        Element:Object -> unit
function RemoveBase(
    Element : Object
)

Parámetros

  • Element
    Tipo: Object

    Obligatorio. CodeElement o nombre de un elemento de la colección.

Comentarios

El elemento quitado puede ser un objeto CodeElement de la colección o el nombre de un elemento único de la colección.

Nota

Los valores de los elementos de modelo de código como clases, structs, funciones, atributos, delegados, etc., pueden ser no deterministas una vez realizados determinados tipos de modificaciones; esto significa que no se puede confiar en que sus valores se mantengan siempre igual.Para obtener más información, vea la sección Los valores de elementos de modelo de código pueden cambiar, en Detectar código utilizando el modelo de código (Visual Basic).

Ejemplos

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

Seguridad de .NET Framework

Vea también

Referencia

CodeClass2 Interfaz

EnvDTE80 (Espacio de nombres)

Otros recursos

Cómo: Compilar y ejecutar los ejemplos de código del modelo de objetos de automatización

Detectar código utilizando el modelo de código (Visual Basic)

Detectar código utilizando el modelo de código (Visual C#)