Comment : utiliser des propriétés indexées dans la programmation COM Interop (Guide de programmation C#)
Les propriétés indexées améliorent la façon dont les propriétés COM qui ont des paramètres sont consommées dans la programmation en C#. Les propriétés indexées opèrent avec d'autres fonctionnalités introduites dans Visual C# 2010, telles que les arguments nommés et optionnels, un nouveau type (dynamique) et des informations de type incorporées, pour améliorer la programmation Microsoft Office.
Dans les versions antérieures de C#, les méthodes sont uniquement accessibles en tant que propriétés si la méthode get ne comporte aucun paramètre et que la méthode set ne contient qu'un seul et unique paramètre de valeur. Toutefois, toutes les propriétés COM ne sont pas confrontées à ces restrictions. Par exemple, la propriété Range d'Excel a un accesseur get qui requiert un paramètre pour le nom de la plage. Dans le passé, étant donné que vous n'avez pas pu accéder directement à la propriété Range, vous deviez utiliser à la place la méthode get_Range, comme indiqué dans l'exemple suivant.
// Visual C# 2008 and earlier.
var excelApp = new Excel.Application();
// . . .
Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing);
Les propriétés indexées vous permettent d'écrire à la place ce qui suit :
// Visual C# 2010.
var excelApp = new Excel.Application();
// . . .
Excel.Range targetRange = excelApp.Range["A1"];
Notes
L'exemple précédent utilise également la fonctionnalité d'arguments optionnels, introduite dans Visual C# 2010, qui vous permet d'omettre Type.Missing.
De la même façon, pour définir la valeur de la propriété Value d'un objet Range dans Visual C# 2008 et versions antérieures, deux arguments sont obligatoires. L'un fournit un argument pour un paramètre optionnel qui spécifie le type de la valeur de plage. L'autre fournit la valeur pour la propriété Value. Avant Visual C# 2010, C# a autorisé un seul argument. Par conséquent, au lieu d'utiliser une méthode set normale, vous deviez utiliser la méthode set_Value ou une propriété différente, Value2. Les exemples suivants illustrent ces techniques. Tous deux affectent à la cellule A1 la valeur Name.
// Visual C# 2008.
targetRange.set_Value(Type.Missing, "Name");
// Or
targetRange.Value2 = "Name";
Les propriétés indexées vous permettent d'écrire à la place le code suivant :
// Visual C# 2010.
targetRange.Value = "Name";
Vous ne pouvez pas créer vos propres propriétés indexées. La fonctionnalité prend en charge uniquement l'utilisation des propriétés indexées existantes.
Exemple
Le code suivant illustre un exemple complet. Pour plus d'informations sur la définition d'un projet qui accède à l'API Office, consultez Comment : accéder aux objets Office Interop à l'aide des fonctionnalités Visual C# (Guide de programmation 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";
}
}
}
Voir aussi
Tâches
Procédure pas à pas : programmation Office (C# et Visual Basic)
Référence
Concepts
Arguments nommés et facultatifs (Guide de programmation C#)