Freigeben über


CodeClass.AddImplementedInterface-Methode

Fügt der Liste der geerbten Objekte eine Schnittstelle hinzu.

Namespace:  EnvDTE
Assembly:  EnvDTE (in EnvDTE.dll)

Syntax

'Declaration
Function AddImplementedInterface ( _
    Base As Object, _
    Position As Object _
) As CodeInterface
CodeInterface AddImplementedInterface(
    Object Base,
    Object Position
)
CodeInterface^ AddImplementedInterface(
    Object^ Base, 
    Object^ Position
)
abstract AddImplementedInterface : 
        Base:Object * 
        Position:Object -> CodeInterface
function AddImplementedInterface(
    Base : Object, 
    Position : Object
) : CodeInterface

Parameter

  • Base
    Typ: Object

    Erforderlich. Die Schnittstelle, die von der Klasse implementiert wird. Dies ist entweder CodeInterface oder ein vollqualifizierter Typname.

  • Position
    Typ: Object

    Optional. Standardwert = 0. Das Codeelement, hinter dem das neue Element hinzugefügt werden soll. Wenn der Wert ein CodeElement ist, wird das neue Element unmittelbar im Anschluss hinzugefügt.

    Wenn der Wert ein Long-Datentyp ist, gibt AddImplementedInterface das Element an, nach dem das neue Element hinzugefügt werden soll.

    Da die Zählung bei Auflistungen mit 1 beginnt, wird mit dem Wert 0 angegeben, dass das neue Element am Anfang der Auflistung eingefügt werden soll. Bei dem Wert -1 wird das Element am Ende eingefügt.

Rückgabewert

Typ: EnvDTE.CodeInterface
Ein CodeInterface-Objekt.

Hinweise

AddImplementedInterface fügt einen Verweis auf eine Schnittstelle hinzu, die von der CodeClass implementiert wird. AddImplementedInterface fügt keine Methodenstubs für die Schnittstellenmember ein.

In Visual C++ ist ein doppelter Doppelpunkt (::) als Trennzeichen für vollqualifizierte Typnamen erforderlich. Alle anderen Programmiersprachen unterstützen das durch Punkte getrennte Format.

Die Gültigkeit der Argumente wird durch die Sprache des Codemodells bestimmt.

Hinweis

Die Werte von Codemodellelementen wie Klassen, Strukturen, Funktionen, Attributen, Delegaten usw. können nach bestimmten Bearbeitungsvorgängen nicht deterministisch sein, d. h., dass nicht mehr davon ausgegangen werden kann, dass ihre Werte immer unverändert bleiben.Weitere Informationen finden Sie im Abschnitt zum Änderungsverhalten von Codemodellelementwerten unter Ermitteln von Code über das Codemodell (Visual Basic).

Beispiele

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

.NET Framework-Sicherheit

Siehe auch

Referenz

CodeClass Schnittstelle

EnvDTE-Namespace

Weitere Ressourcen

Gewusst wie: Kompilieren und Ausführen der Codebeispiele für das Automatisierungsobjektmodell

Ermitteln von Code über das Codemodell (Visual Basic)

Ermitteln von Code über das Codemodell (Visual C#)