Partager via


Liaison tardive dans les solutions Bureau

Certains types dans les modèles objet de application Office lications fournissent des fonctionnalités disponibles via des fonctionnalités de liaison tardive. Par exemple, certaines méthodes et propriétés peuvent retourner différents types d’objets en fonction du contexte de la application Office lication, et certains types peuvent exposer différentes méthodes ou propriétés dans différents contextes.

S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets au niveau du document et aux projets de complément VSTO. Consultez les fonctionnalités disponibles par application Office lication et le type de projet.

Les projets Visual Basic où Option Strict est désactivé et les projets Visual C# qui ciblent .NET Framework 4 ou .NET Framework 4.5 peuvent fonctionner directement avec des types qui utilisent ces fonctionnalités de liaison tardive.

Conversion implicite et explicite des valeurs de retour d’objet

De nombreuses méthodes et propriétés dans Microsoft Bureau les assemblys d’interopérabilité principaux (PIA) retournent Object des valeurs, car elles peuvent retourner plusieurs types d’objets différents. Par exemple, la ActiveSheet propriété retourne une Object valeur de retour, car sa valeur de retour peut être un ou Chart un Worksheet objet, selon la feuille active.

Lorsqu’une méthode ou une propriété retourne un Object, vous devez convertir explicitement (en Visual Basic) l’objet en type correct dans les projets Visual Basic sur lesquels Option Strict est activée. Vous n’avez pas besoin de convertir Object explicitement les valeurs de retour dans les projets Visual Basic où Option Strict est désactivée.

Dans la plupart des cas, la documentation de référence répertorie les types possibles de la valeur de retour pour un membre qui retourne un Object. La conversion ou la conversion de l’objet active IntelliSense pour l’objet dans l’Éditeur de code.

Pour plus d’informations sur la conversion en Visual Basic, consultez les conversions implicites et explicites (Visual Basic) et la fonction CType (Visual Basic).

Exemples

L’exemple de code suivant montre comment convertir un objet en un type spécifique dans un projet Visual Basic sur lequel Option Strict est activée. Dans ce type de projet, vous devez convertir explicitement la Cells propriété en un Range. Cet exemple nécessite un projet Excel au niveau du document avec une classe de feuille de calcul nommée Sheet1.

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

L’exemple de code suivant montre comment convertir implicitement un objet en un type spécifique dans un projet Visual Basic où Option Strict est désactivée ou dans un projet Visual C# qui cible le .NET Framework 4. Dans ces types de projets, la Cells propriété est implicitement convertie en un Range. Cet exemple nécessite un projet Excel au niveau du document avec une classe de feuille de calcul nommée Sheet1.

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

Accéder aux membres qui sont disponibles uniquement par le biais d’une liaison tardive

Certaines propriétés et méthodes de l’Bureau les api d’identification personnelle sont disponibles uniquement via la liaison tardive. Dans les projets Visual Basic où Option Strict est désactivée ou dans les projets Visual C# qui ciblent .NET Framework 4 ou .NET Framework 4.5, vous pouvez utiliser les fonctionnalités de liaison tardive dans ces langages pour accéder aux membres à liaison tardive. Dans les projets Visual Basic sur lesquels Option Strict est activée, vous devez utiliser la réflexion pour accéder à ces membres.

Exemples

L’exemple de code suivant montre comment accéder aux membres à liaison tardive dans un projet Visual Basic où Option Strict est désactivée ou dans un projet Visual C# qui cible .NET Framework 4. Cet exemple accède à la propriété Nom lié tardivement de la boîte de dialogue Ouvrir le fichier dans Word. Pour utiliser cet exemple, exécutez-le à partir de la ou ThisAddIn de la ThisDocument classe dans un projet Word.

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

L’exemple de code suivant montre comment utiliser la réflexion pour accomplir la même tâche dans un projet Visual Basic sur lequel Option Strict est activée.

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