Associazione tardiva nelle soluzioni Office
Alcuni tipi nei modelli a oggetti di applicazioni di Office forniscono una funzionalità disponibile tramite le funzionalità di associazione tardiva.Ad esempio, alcuni metodi e proprietà possono restituire diversi tipi di oggetti in base al contesto dell'applicazione di Office e alcuni tipi possono esporre metodi o proprietà diversi in contesti diversi.
Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento e di applicazione per Office 2013 e Office 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.
I progetti di Visual Basic. Option Strict dove non è attiva e Visual c destinati a .NET Framework 4 o .NET Framework 4.5 può utilizzare direttamente i tipi che utilizzano queste funzionalità di associazione tardiva.
Esecuzione del cast implicita ed esplicita dei valori restituiti dell'oggetto
Molti metodi e proprietà degli assembly di interoperabilità primari di Microsoft Office restituiscono i valori Object poiché possono restituire diversi tipi di oggetti.Ad esempio, la proprietà ActiveSheet restituisce un Object perché il valore restituito può essere un oggetto Worksheet o Chart, in base al foglio attivo.
Quando un metodo o una proprietà restituisce Object, è necessario convertire in modo esplicito (in Visual Basic) l'oggetto al tipo corretto nei progetti di Visual Basic. in cui Option Strict è attivata.Non è necessario eseguire il cast in modo esplicito dei valori restituiti di Object nei progetti di Visual Basic. Option Strict dove non è attiva.
Nella maggior parte dei casi, nella documentazione di riferimento vengono elencati i possibili tipi di valore restituito per un membro che restituisce un Object.La conversione o il cast dell'oggetto determina l'attivazione di IntelliSense per tale l'oggetto nell'editor del codice.
Per informazioni sulla conversione in Visual Basic, vedere Conversioni implicite ed esplicite (Visual Basic) e Funzione CType (Visual Basic).
Esempi
Nell'esempio di codice seguente viene illustrato come eseguire il cast di un oggetto a un tipo specifico in un progetto di Visual Basic. in cui Option Strict è attivata.In questo tipo di progetto, è necessario eseguire esplicitamente il cast della proprietà di Cells a Range.In questo esempio viene richiesto un progetto Excel a livello di documento con una classe del foglio di lavoro denominata Sheet1.
Dim castRange As Excel.Range = CType(Globals.Sheet1.Cells(1, 1), Excel.Range)
Nell'esempio di codice seguente viene dimostrato come eseguire in modo implicito il cast di un oggetto a un tipo specifico in un progetto di Visual Basic dove Option Strict non è attiva o in un progetto di Visual C# che ha .NET Framework 4 come destinazione.In questi tipi di progetti, viene eseguito il cast in modo implicito della proprietà Cells a un Range.In questo esempio viene richiesto un progetto Excel a livello di documento con una classe del foglio di lavoro denominata Sheet1.
Dim dynamicRange As Excel.Range = Globals.Sheet1.Cells(1, 1)
Excel.Range dynamicRange = Globals.Sheet1.Cells[1, 1];
Accesso ai membri disponibili solo tramite associazione tardiva
Alcune proprietà e metodi negli assembly di interoperabilità primari di Office sono disponibili solo tramite associazione tardiva.Nei progetti di Visual Basic. in cui Option Strict è attiva o in Visual c destinati a .NET Framework 4 o .NET Framework 4.5, è possibile utilizzare le funzionalità di associazione tardiva in questi linguaggi per accedere ai membri ad associazione tardiva.Nei progetti di Visual Basic. Option Strict dove è attiva, è necessario utilizzare la reflection per accedere a questi membri.
Esempi
Nell'esempio di codice seguente viene dimostrato come accedere ai membri associati in modo tardivo in un progetto di Visual Basic dove Option Strict non è attiva o in un progetto di Visual C# che ha .NET Framework 4 come destinazione.In questo esempio viene eseguito l'accesso alla proprietà Name associata in modo tardivo della finestra di dialogo Apri file in Word.Per utilizzare questo esempio, eseguirlo dalla classe ThisDocument o ThisAddIn del progetto 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);
Nell'esempio di codice seguente viene illustrato come utilizzare la reflection per eseguire la stessa attività in un progetto di Visual Basic. in cui Option Strict è attivata.
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))
Vedere anche
Riferimenti
Reflection (C# e Visual Basic)
Concetti
Scrittura di codice nelle soluzioni Office
Parametri facoltativi nelle soluzioni Office