Liaison tardive dans les solutions Office
Certains types des modèles objets d'applications Office 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 selon le contexte de l'application Office 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 de niveau document et de niveau application pour Office 2013 et Office 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
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 les 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 des assemblys PIA (Primary Interop Assembly) Microsoft Office retournent des valeurs Object, car elles peuvent retourner plusieurs types d'objets différents.Par exemple, la propriété ActiveSheet retourne Object car sa valeur de retour peut être un objet Worksheet ou Chart, selon la feuille active.
Lorsqu'une méthode ou une propriété retourne Object, vous devez convertir explicitement (en Visual Basic) l'objet approprié au type dans les projets Visual Basic où Option Strict est activé.Vous ne devez pas caster explicitement des valeurs de retour d' Object dans les projets Visual Basic où Option Strict est désactivé.
Dans la plupart des cas, la documentation de référence répertorie les types de valeur de retour possibles pour un membre qui retourne Object.La conversion ou le cast de l'objet active la fonctionnalité IntelliSense relative à cet objet dans l'éditeur de code.
Pour plus d'informations sur la conversion en Visual Basic, consultez Conversions implicites et explicites (Visual Basic) et Fonction CType (Visual Basic).
Exemples
L'exemple de code suivant montre comment effectuer un cast d'un objet en un type spécifique dans un projet Visual Basic dans lesquels Option Strict est activé.Dans ce type de projet, vous devez caster explicitement la propriété d' Cells à Range.Cet exemple requiert un projet Excel de niveau 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 caster implicitement un objet en un type spécifique dans un projet Visual Basic dans lequel Option Strict est désactivé ou dans un projet Visual C# qui cible .NET Framework 4.Dans ces types de projets, la propriété Cells est castée implicitement en Range.Cet exemple requiert un projet Excel de niveau document avec une classe de feuille de calcul nommée Sheet1.
Dim dynamicRange As Excel.Range = Globals.Sheet1.Cells(1, 1)
Excel.Range dynamicRange = Globals.Sheet1.Cells[1, 1];
Accès à des membres disponibles uniquement via une liaison tardive
Certaines propriétés et méthodes des assemblys PIA Office sont uniquement disponibles via une liaison tardive.Dans les projets Visual Basic en dehors de l' Option Strict est activé 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 où Option Strict est activé, 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 dans lequel Option Strict est désactivé ou dans un projet Visual C# qui cible .NET Framework 4.Cet exemple accède à la propriété Name à liaison tardive de la boîte de dialogue Ouvrir dans Word.Pour utiliser cet exemple, exécutez-le à partir de la classe ThisDocument ou ThisAddIn dans un projet Word.
Private Sub TestDynamicDialog()
Dim dialog As Word.Dialog = Application.Dialogs(Word.WdWordDialog.wdDialogFileOpen)
dialog.Name = "Testing"
dialog.Show()
MessageBox.Show(dialog.Name)
End Sub
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 dans lesquels Option Strict est activé.
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))
Voir aussi
Référence
Réflexion (C# et Visual Basic)
Concepts
Écriture de code dans les solutions Office
Paramètres optionnels dans les solutions Office