Späte Bindung in Office-Lösungen

Einige Typen in den Objektmodellen von Office-App lications bieten Funktionen, die über späte Bindungsfeatures verfügbar sind. Beispielsweise können einige Methoden und Eigenschaften unterschiedliche Objekttypen je nach Kontext der Office-App lizenzierung zurückgeben, und einige Typen können unterschiedliche Methoden oder Eigenschaften in unterschiedlichen Kontexten verfügbar machen.

Gilt für: Die Informationen in diesem Thema gelten für Projekte auf Dokumentebene und VSTO-Add-In-Projekte. Siehe features available by Office-App lication and project type.

Visual Basic-Projekte, bei denen Option Strict deaktiviert ist, und Visual C#-Projekte, die auf .NET Framework 4 oder .NET Framework 4.5 abzielen, können direkt mit Typen arbeiten, die diese Spätbindungsfeatures verwenden.

Implizite und explizite Umwandlung von Objektrückgabewerten

Viele Methoden und Eigenschaften in den primären Interopassemblys (PIAs) von Microsoft Office geben Werte zurück Object , da sie verschiedene Objekttypen zurückgeben können. Die Eigenschaft gibt z. B. einen Object Wert zurück, ActiveSheet da der Rückgabewert ein Worksheet oder Chart ein Objekt sein kann, je nachdem, was das aktive Blatt ist.

Wenn eine Methode oder Eigenschaft einen ObjectWert zurückgibt, müssen Sie das Objekt (in Visual Basic) explizit in den richtigen Typ in Visual Basic-Projekten konvertieren, in denen Option Strict aktiviert ist. Sie müssen keine expliziten Rückgabewerte in Visual Basic-Projekten umwandeln Object , in denen Option Strict deaktiviert ist.

In den meisten Fällen werden in der Referenzdokumentation die möglichen Typen des Rückgabewerts für ein Element aufgelistet, das ein ObjectElement zurückgibt. Das Konvertieren oder Umwandeln des Objekts ermöglicht IntelliSense für das Objekt im Code-Editor.

Informationen zur Konvertierung in Visual Basic finden Sie unter Implizite und explizite Konvertierungen (Visual Basic) und CType-Funktion (Visual Basic).For information about conversion in Visual Basic, see Implicit and explicit conversions (Visual Basic) and CType function (Visual Basic).

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie sie ein Objekt in einen bestimmten Typ in ein Visual Basic-Projekt umwandeln, in dem Option Strict aktiviert ist. In diesem Projekttyp müssen Sie die Cells Eigenschaft explizit in eine Range. In diesem Beispiel ist ein Excel-Projekt auf Dokumentebene mit einer Arbeitsblattklasse mit dem Namen Sheet1erforderlich.

Dim castRange As Excel.Range = CType(Globals.Sheet1.Cells(1, 1), Excel.Range)

Im folgenden Codebeispiel wird veranschaulicht, wie sie ein Objekt implizit in einen bestimmten Typ in ein Visual Basic-Projekt umwandeln, in dem Option Strict deaktiviert ist oder in einem Visual C#-Projekt, das auf .NET Framework 4 ausgerichtet ist. In diesen Projekttypen wird die Cells Eigenschaft implizit in ein Range. In diesem Beispiel ist ein Excel-Projekt auf Dokumentebene mit einer Arbeitsblattklasse mit dem Namen Sheet1erforderlich.

Excel.Range dynamicRange = Globals.Sheet1.Cells[1, 1];

Access-Member, die nur über eine späte Bindung verfügbar sind

Einige Eigenschaften und Methoden in den Office-PIAs sind nur über eine späte Bindung verfügbar. In Visual Basic-Projekten, bei denen Option Strict deaktiviert ist oder in Visual C#-Projekten, die auf .NET Framework 4 oder .NET Framework 4.5 abzielen, können Sie die verspäteten Bindungsfeatures in diesen Sprachen verwenden, um auf spät gebundene Member zuzugreifen. In Visual Basic-Projekten, in denen Option Strict aktiviert ist, müssen Sie Spiegelung verwenden, um auf diese Member zuzugreifen.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie in einem Visual Basic-Projekt, in dem Option Strict deaktiviert ist, oder in einem Visual C#-Projekt, das auf .NET Framework 4 ausgerichtet ist, auf spät gebundene Member zugreifen. In diesem Beispiel wird auf die Eigenschaft "Name spät gebunden" des Dialogfelds "Datei öffnen" in Word zugegriffen. Um dieses Beispiel zu verwenden, führen Sie es aus der ThisDocument Oder-Klasse ThisAddIn in einem Word-Projekt aus.

dynamic dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen];
dialog.Name = "Testing";
dialog.Show();
MessageBox.Show(dialog.Name);

Im folgenden Codebeispiel wird veranschaulicht, wie Sie die Spiegelung verwenden, um dieselbe Aufgabe in einem Visual Basic-Projekt auszuführen, auf dem Option Strict aktiviert ist.

Dim dlg As Word.Dialog = Application.Dialogs(Word.WdWordDialog.wdDialogFileOpen)
Dim dlgType As Type = GetType(Word.Dialog)

' Set the Name property of the dialog box.
dlgType.InvokeMember("Name", _
    Reflection.BindingFlags.SetProperty Or _
        Reflection.BindingFlags.Public Or _
        Reflection.BindingFlags.Instance, _
    Nothing, dlg, New Object() {"Testing"}, _
    System.Globalization.CultureInfo.InvariantCulture)

' Display the dialog box.
dlg.Show()

' Show the Name property.
MessageBox.Show(dlgType.InvokeMember("Name", _
    Reflection.BindingFlags.GetProperty Or _
        Reflection.BindingFlags.Public Or _
        Reflection.BindingFlags.Instance, _
    Nothing, dlg, Nothing, _
    System.Globalization.CultureInfo.InvariantCulture))