Como usar propriedades indexadas na programação para interoperabilidade COM (Guia de Programação em C#)
Indexado propriedades melhorar o modo no qual COM propriedades que possuem parâmetros são consumidas na programação de C#. Indexado propriedades funcionam com outros recursos introduzidos no Visual C# 2010, tais 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#, métodos são acessíveis como se propriedades do get método não tem parâmetros e o set método tem apenas um parâmetro de valor. No entanto, nem todas as propriedades COM atendem a essas restrições. Por exemplo, o Excel intervalo a propriedade tem um get acessador 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"];
Dica
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 da 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ê escreva o seguinte código em vez disso.
// Visual C# 2010.
targetRange.Value = "Name";
Você não pode 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 Como acessar objetos de interoperabilidade do Office usando recursos do Visual C# (Guia de Programação em 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
Como usar argumentos nomeados e opcionais na programação do Office (Guia de Programação em C#)
Passo a passo: Programação do Office (C# e Visual Basic)
Referência
Conceitos
Argumentos nomeados e opcionais (Guia de Programação em C#)