Condividi tramite


Metodo CodeClass.RemoveBase

Rimuove un oggetto dall'elenco delle basi.

Spazio dei nomi:  EnvDTE
Assembly:  EnvDTE (in EnvDTE.dll)

Sintassi

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

Parametri

Note

Obbligatoria. Oggetto CodeElement o nome di un oggetto incluso nell'insieme.

L'elemento rimosso può corrispondere a un oggetto CodeElement incluso nell'insieme oppure al nome di un elemento univoco dell'insieme.

Nota

I valori degli elementi del modello di codice, quali classi, strutture, funzioni, attributi, delegati e così via, possono non essere deterministici dopo alcuni tipi di modifiche. Ciò significa che non si può fare affidamento sulla stabilità di tali valori. Per ulteriori informazioni, vedere la sezione Possibile modifica dei valori degli elementi del modello di codice in Individuazione di codice mediante il modello di codice (Visual Basic).

Esempi

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

Sicurezza di .NET Framework

Vedere anche

Riferimenti

CodeClass Interfaccia

Spazio dei nomi EnvDTE

Altre risorse

Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione

Individuazione di codice mediante il modello di codice (Visual Basic)

Individuazione di codice mediante il modello di codice (Visual C#)