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çã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.
Referência
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