Ligação tardia em soluções do Office

Alguns tipos de modelos de objeto dos aplicativos do Office fornecem funcionalidade que está disponível por meio de recursos de ligação atrasada. Por exemplo, alguns métodos e propriedades podem retornar os diferentes tipos de objetos, dependendo do contexto do aplicativo do Office e alguns tipos podem expor diferentes métodos ou propriedades em contextos diferentes.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Microsoft Office 2010 e o sistema 2007 do Microsoft Office. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Projetos de Visual Basic onde Option Strict está desativado e Visual C# projetos destinados a .NET Framework 4 pode trabalhar diretamente com os tipos que empregam esses recursos de ligação atrasada. Projetos de Visual Basic onde Option Strict está ativado e Visual C# projetos destinados a.NET Framework 3.5 deve usar a projeção ou reflexão para usar esses tipos.

Conversão implícita e explícita de valores de retorno de objeto

Vários métodos e propriedades do Microsoft Office assemblies de interoperabilidade primários (PIAs) retornam Object valores, porque eles podem retornar vários tipos diferentes de objetos. Por exemplo, o ActiveSheet propriedade retorna um Object como seu valor de retorno pode ser um Worksheet ou Chart objeto, dependendo do que a planilha ativa is.

Quando um método ou propriedade retorna um Object, explicitamente, você deve converter (Visual Basic) ou difusão (C#) o objeto para o tipo correto em projetos de Visual Basic onde Option Strict está no e em projetos do Visual C# destinados a.NET Framework 3.5. Você não precisa explicitamente convertido Object valores de retorno em projetos de Visual Basic onde Option Strict é desligado e em projetos do Visual C# de destino a .NET Framework 4.

Na maioria dos casos, a documentação de referência relaciona os possíveis tipos de valor de retorno para um membro que retorna um Object. Converter ou converter o objeto permite que IntelliSense para o objeto no Editor de código.

Para obter informações sobre conversão de Visual Basic, consulte Conversões explícitas e implícitas (Visual Basic) e Função CType (Visual Basic). Para obter informações sobre a conversão no Visual C#, consulte Elenco e conversões de Tipo (guia de programação de C#) e Operador de () (C# referência).

Examples

O exemplo de código a seguir demonstra como converter um objeto para um tipo específico em um projeto de Visual Basic onde Option Strict é em ou em um projeto do Visual C# que se destina a.NET Framework 3.5. Esses tipos de projetos, você deve converter explicitamente a Cells propriedade para um Range. Este exemplo requer um projeto de nível de documento do Excel com uma classe de planilha chamada Sheet1.

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

O exemplo de código a seguir demonstra como implicitamente calculo a um objeto para um tipo específico em um projeto de Visual Basic onde Option Strict está desligado ou em um projeto do Visual C# que se destina a .NET Framework 4. Esses tipos de projetos, o Cells propriedade implicitamente é convertida em um Range. Este exemplo requer um projeto de nível de documento do Excel com uma classe de planilha chamada Sheet1.

Dim dynamicRange As Excel.Range = Globals.Sheet1.Cells(1, 1)
Excel.Range dynamicRange = Globals.Sheet1.Cells[1, 1];

Acessando os membros que estão disponíveis somente através de ligação tardia

Algumas propriedades e métodos de PIAs do Office estão disponíveis somente através de ligação tardia. No Visual Basic projetos onde Option Strict está desligado ou projetos do Visual C# destinados a .NET Framework 4, você pode usar os recursos de ligação tardia nesses idiomas para acessar membros de ligação tardia. No Visual Basic projetos onde Option Strict está em ou em projetos do Visual C# destinados a.NET Framework 3.5, você deve usar a reflexão para acessar esses membros.

Examples

O exemplo de código a seguir demonstra como acessar membros de ligação tardia em um projeto de Visual Basic onde Option Strict está desligado ou em um projeto do Visual C# que se destina a .NET Framework 4. Este exemplo acessa a ligação tardia Name propriedade da Abrir arquivo caixa de diálogo do Word. Para usar esse exemplo, executá-lo do ThisDocument ou ThisAddIn da classe em uma palavra projeto.

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

O exemplo de código a seguir demonstra como usar a reflexão para realizar a mesma tarefa em um projeto de Visual Basic onde Option Strict é em ou em um projeto do Visual C# que se destina a.NET Framework 3.5.

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))
Word.Dialog dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen];
System.Type dialogType = typeof(Word.Dialog);

// Set the Name property of the dialog box.
dialogType.InvokeMember("Name", 
    System.Reflection.BindingFlags.SetProperty | 
        System.Reflection.BindingFlags.Public | 
        System.Reflection.BindingFlags.Instance,
    null, dialog, new object[] { "Testing" },
    System.Globalization.CultureInfo.InvariantCulture);

// Display the dialog box.
dialog.Show(ref missing); 

// Show the Name property.
MessageBox.Show(dialogType.InvokeMember("Name",
    System.Reflection.BindingFlags.GetProperty |
        System.Reflection.BindingFlags.Public |
        System.Reflection.BindingFlags.Instance,
    null, dialog, null,
    System.Globalization.CultureInfo.InvariantCulture).ToString());

Consulte também

Referência

Opção declaração estrito

Reflexão (C# e Visual Basic)

Conceitos

Escrevendo código em soluções do Office

Parâmetros opcionais em soluções do Office

Outros recursos

Usando o Tipo dinâmico (guia de programação C#)

Projetando e criando soluções do Office