Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Vissa typer i objektmodellerna i Office-program tillhandahåller funktioner som är tillgängliga via funktioner för sen bindning. Vissa metoder och egenskaper kan till exempel returnera olika typer av objekt beroende på kontexten för Office-programmet, och vissa typer kan exponera olika metoder eller egenskaper i olika kontexter.
Gäller för: Informationen i det här avsnittet gäller för projekt på dokumentnivå och VSTO-tilläggsprojekt. Se Funktioner som är tillgängliga efter Office-program och projekttyp.
Visual Basic-projekt där Alternativ strikt är inaktiverat och Visual C#-projekt som riktar sig mot .NET Framework 4 eller .NET Framework 4.5 kan fungera direkt med typer som använder dessa funktioner för sen bindning.
Implicit och explicit konvertering av objektreturvärden
Många metoder och egenskaper i PIA:er (Primary Interop Assemblies) i Microsoft Office returnerar Object värden, eftersom de kan returnera flera olika typer av objekt. Till exempel returnerar egenskapen ActiveSheet en Object eftersom dess returvärde kan vara ett Worksheet- eller Chart-objekt, beroende på vilket det aktiva bladet är.
När en metod eller egenskap returnerar en Objectmåste du uttryckligen konvertera objektet (i Visual Basic) till rätt typ i Visual Basic-projekt där Alternativet Strikt är aktiverat. Du behöver inte uttryckligen konvertera Object returvärden i Visual Basic-projekt där Option Strict är avstängd.
I de flesta fall visar referensdokumentationen möjliga typer av returvärdet för en medlem som returnerar en Object. Om objektet konverteras eller omvandlas aktiveras IntelliSense för objektet i kodredigeraren.
Information om konvertering i Visual Basic finns i Implicita och explicita konverteringar (Visual Basic) och CType-funktionen (Visual Basic).
Examples
I följande kodexempel visas hur du omvandlar ett objekt till en viss typ i ett Visual Basic-projekt där Alternativet Strikt är aktiverat. I den här typen av projekt måste du uttryckligen omvandla Cells-egenskapen till en Range. Det här exemplet kräver ett Excel-projekt på dokumentnivå med en kalkylbladsklass med namnet Sheet1.
Dim castRange As Excel.Range = CType(Globals.Sheet1.Cells(1, 1), Excel.Range)
Följande kodexempel visar hur du implicit omvandlar ett objekt till en viss typ i ett Visual Basic-projekt där Alternativ strikt är inaktiverat eller i ett Visual C#-projekt som riktar sig mot .NET Framework 4. I dessa typer av projekt Cells omvandlas egenskapen implicit till en Range. Det här exemplet kräver ett Excel-projekt på dokumentnivå med en kalkylbladsklass med namnet Sheet1.
Åtkomstmedlemmar som endast är tillgängliga via sen bindning
Vissa egenskaper och metoder i Office PIA är endast tillgängliga via sen bindning. I Visual Basic-projekt där Alternativ strikt är inaktiverat eller i Visual C#-projekt som riktar sig mot .NET Framework 4 eller .NET Framework 4.5 kan du använda funktionerna för sen bindning på dessa språk för att få åtkomst till medlemmar med sen bindning. I Visual Basic-projekt där Option Strict är aktiverat måste du använda reflektion för att få åtkomst till dessa medlemmar.
Examples
Följande kodexempel visar hur du får åtkomst till medlemmar med sen bindning i ett Visual Basic-projekt där Alternativ strikt är inaktiverat eller i ett Visual C#-projekt som riktar sig till .NET Framework 4. Det här exemplet kommer åt egenskapen late-bound Name i dialogrutan Öppna fil i Word. Om du vill använda det här exemplet kör du det från ThisDocument klassen eller ThisAddIn i ett Word-projekt.
dynamic dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen];
dialog.Name = "Testing";
dialog.Show();
MessageBox.Show(dialog.Name);
Följande kodexempel visar hur du använder reflektion för att utföra samma uppgift i ett Visual Basic-projekt där Alternativet strikt är aktiverat.
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))