Compartilhar via


How to: Usar Propriedades de indexado em interoperabilidade de COM programação (guia de programação C#)

Indexado propriedades melhorar a maneira na qual COM propriedades que possuem parâmetros são consumidas na programação de C#. Indexado funcionam de propriedades com outros recursos introduzidos no Visual C# 2010, como argumentos nomeados e opcionais, um novo tipo (dinâmico), e informações de tipo incorporados, para melhorar a programação de Microsoft Office.

Em versões anteriores do C#, os métodos são acessíveis como se apenas de propriedades de get método não tem parâmetros e o set método tem apenas um valor parâmetro. No entanto, nem todas as propriedades de COM atendem a essas restrições. Por exemplo, o Excel intervalo a propriedade tem um get acessador que requer um parâmetro para o nome do intervalo. No passado, porque você não pôde acessar o Range propriedade diretamente, era necessário usar o get_Range método em vez disso, conforme mostrado no exemplo a seguir.

// Visual C# 2008 and earlier.
var excelApp = new Excel.Application();
// . . .
Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing);

Propriedades indexadas permitem que você escrever, em vez disso, o seguinte:

// Visual C# 2010.
var excelApp = new Excel.Application();
// . . .
Excel.Range targetRange = excelApp.Range["A1"];
ObservaçãoObservação

O exemplo anterior também usa o argumentos opcionais recurso introduzido no Visual C# 2010, que permite que você omita Type.Missing.

Da mesma forma, para definir o valor de Value propriedade de um intervalo de objeto no Visual C# 2008 e anteriores, dois argumentos são necessários. Uma fornece um argumento para um parâmetro opcional que especifica o tipo de valor de intervalo. O outro fornece o valor para o Value propriedade. Antes do Visual C# 2010, C# permitido apenas um argumento. Portanto, em vez de usar um método do conjunto regular, você precisava usar o set_Value método ou propriedade diferente, valor2. Os exemplos a seguir ilustram essas técnicas. Ambos definir o valor da célula A1 para Name.

// Visual C# 2008.
targetRange.set_Value(Type.Missing, "Name");
// Or
targetRange.Value2 = "Name";

Propriedades indexadas permitem que você escrever o código a seguir.

// Visual C# 2010.
targetRange.Value = "Name";

Não é possível criar propriedades indexadas de sua preferência. O recurso suporta apenas o consumo de propriedades indexadas existentes.

Exemplo

O código a seguir mostra um exemplo completo. Para obter mais informações sobre como configurar um projeto que acessa a API do Office, consulte How to: Objetos de interoperabilidade do Office Access usando recursos visuais C# 2010 (guia de programação C#).

// You must add a reference to Microsoft.Office.Interop.Excel to run 
// this example.
using System;
using Excel = Microsoft.Office.Interop.Excel;

namespace IndexedProperties
{
    class Program
    {
        static void Main(string[] args)
        {
            CSharp2010();
            //CSharp2008();
        }

        static void CSharp2010()
        {
            var excelApp = new Excel.Application();
            excelApp.Workbooks.Add();
            excelApp.Visible = true;

            Excel.Range targetRange = excelApp.Range["A1"];
            targetRange.Value = "Name";
        }

        static void CSharp2008()
        {
            var excelApp = new Excel.Application();
            excelApp.Workbooks.Add(Type.Missing);
            excelApp.Visible = true;

            Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing);
            targetRange.set_Value(Type.Missing, "Name");
            // Or
            //targetRange.Value2 = "Name";

        }
    }
}

Consulte também

Tarefas

How to: Chamada de uso e argumentos Opcional no Office (guia de programação C#) de programação.

How to: Objetos de interoperabilidade do Office Access usando recursos visuais C# 2010 (guia de programação C#)

Referência

dinâmico (referência de C#)

Conceitos

Nome e argumentos Opcional (guia de programação de C#)

Outros recursos

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

Demonstra Passo a passo: Programação (C# e Visual Basic) do Office