Como usar propriedades indexadas na programação para interoperabilidade COM
As propriedades indexadas trabalham juntamente com outras funcionalidades no C#, como argumentos nomeados e opcionais, um novo tipo (dinâmico) e informações de tipo inseridas para melhorar a programação do Microsoft Office.
Importante
O Visual Studio Tools para Office (VSTO) depende do .NET Framework. Os suplementos COM também podem ser gravados com o .NET Framework. Os suplementos do Office não podem ser criados com o .NET Core e o .NET 5+, as versões mais recentes do .NET. Isso ocorre porque o .NET Core/.NET 5+ não pode trabalhar em conjunto com o .NET Framework no mesmo processo e pode levar a falhas de carga de suplemento. Você pode continuar a usar o .NET Framework para escrever suplementos VSTO e COM para o Office. A Microsoft não atualizará o VSTO ou a plataforma de suplemento COM para usar o .NET Core ou o .NET 5+. Você pode aproveitar o .NET Core e o .NET 5+, incluindo o ASP.NET Core, para criar o lado do servidor dos Suplementos Web do Office.
Nas versões anteriores do C#, os métodos são acessíveis como propriedades apenas se o método get
não tem parâmetros e o método set
tem apenas um parâmetro de valor. No entanto, nem todas as propriedades COM atendem a essas restrições. Por exemplo, a propriedade Range[] do Excel tem um acessador get
que requer um parâmetro para o nome do intervalo. No passado, como não era possível acessar a propriedade Range
diretamente, era necessário usar o método get_Range
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);
Em vez disso, as propriedades indexadas permitem escrever o seguinte:
// Visual C# 2010.
var excelApp = new Excel.Application();
// . . .
Excel.Range targetRange = excelApp.Range["A1"];
O exemplo anterior também usa o recurso argumentos opcionais, que permite que você omita Type.Missing
.
As propriedades indexadas permitem 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 dá suporte apenas ao 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#.
// 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();
}
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";
}
}
}
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de