Vinculação tardia em soluções do Office
Alguns tipos nos modelos de objeto de aplicativos do Office fornecem funcionalidade que está disponível por meio de recursos de vinculação tardia. Por exemplo, alguns métodos e propriedades podem retornar diferentes tipos de objetos, dependendo do contexto do aplicativo do Office, e alguns tipos podem expor diferentes métodos ou propriedades em contextos diferentes.
Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO. Consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.
Projetos do Visual Basic onde Option Strict está desativado e projetos do Visual C# destinados ao .NET Framework 4 ou ao .NET Framework 4.5 podem trabalhar diretamente com tipos que empregam esses recursos de vinculação tardia.
Conversão implícita e explícita de valores de retorno de objeto
Muitos métodos e propriedades nos assemblies de interoperabilidade primária (PIAs) do Microsoft Office retornam Object valores, porque eles podem retornar vários tipos diferentes de objetos. Por exemplo, a propriedade retorna um porque seu valor de retorno pode ser um Object Worksheet objeto ouChart, dependendo de qual é a ActiveSheet planilha ativa.
Quando um método ou propriedade retorna um Object, você deve converter explicitamente (no Visual Basic) o objeto para o tipo correto em projetos do Visual Basic onde Option Strict está ativado. Você não precisa converter Object explicitamente valores de retorno em projetos do Visual Basic onde Option Strict está desativado.
Na maioria dos casos, a documentação de referência lista os tipos possíveis do valor de retorno para um membro que retorna um Objectarquivo . Converter ou converter o objeto habilita o IntelliSense para o objeto no Editor de códigos.
Para obter informações sobre conversão no Visual Basic, consulte Conversões implícitas e explícitas (Visual Basic) e Função CType (Visual Basic).
Exemplos
O exemplo de código a seguir demonstra como converter um objeto para um tipo específico em um projeto Visual Basic onde Option Strict está ativado. Nesse tipo de projeto, você deve converter explicitamente a Cells propriedade em um Rangearquivo . Este exemplo requer um projeto do Excel em nível de documento com uma classe de planilha chamada Sheet1
.
Dim castRange As Excel.Range = CType(Globals.Sheet1.Cells(1, 1), Excel.Range)
O exemplo de código a seguir demonstra como converter implicitamente um objeto para um tipo específico em um projeto do Visual Basic onde Option Strict está desativado ou em um projeto Visual C# que tem como alvo o .NET Framework 4. Nesses tipos de projetos, a Cells propriedade é implicitamente convertida em um Rangearquivo . Este exemplo requer um projeto do Excel em nível de documento com uma classe de planilha chamada Sheet1
.
Acessar membros que estão disponíveis somente por meio de vinculação tardia
Algumas propriedades e métodos nos PIAs do Office estão disponíveis somente por meio de vinculação tardia. Em projetos do Visual Basic onde Option Strict está desativado ou em projetos do Visual C# destinados ao .NET Framework 4 ou ao .NET Framework 4.5, você pode usar os recursos de vinculação tardia nessas linguagens para acessar membros vinculados tardiamente. Em projetos do Visual Basic onde Option Strict está ativado, você deve usar a reflexão para acessar esses membros.
Exemplos
O exemplo de código a seguir demonstra como acessar membros vinculados atrasados em um projeto do Visual Basic onde Option Strict está desativado ou em um projeto Visual C# que se destina a .NET Framework 4. Este exemplo acessa a propriedade Name de ligação tardia da caixa de diálogo Abrir Arquivo no Word. Para usar este exemplo, execute-o a ThisDocument
partir da classe ou ThisAddIn
em um projeto do Word.
dynamic dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen];
dialog.Name = "Testing";
dialog.Show();
MessageBox.Show(dialog.Name);
O exemplo de código a seguir demonstra como usar a reflexão para realizar a mesma tarefa em um projeto Visual Basic onde Option Strict está ativado.
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))