Gewusst wie: Indizierte Eigenschaften bei der COM-Interop-Programmierung (C#-Programmierhandbuch)

Indizierte Eigenschaften verbessern die Art und Weise, auf die COM-Eigenschaften, die über Parameter verfügen, von C#-Programmierung genutzt werden. Indizierte Eigenschaften funktionieren zusammen mit anderen in Visual C# 2010 eingeführten Funktionen zur Verbesserung der Microsoft Office-Programmierung, wie -benannten und optionalen Argumenten, dem neuen dynamic-Typ und eingebetteten Typinformationen.

In früheren Versionen von C# konnte auf Methoden nur als Eigenschaften zugegriffen werden, wenn die get-Methode über keine Parameter, und die set-Methode über ausschließlich einen Wertparameter verfügte. Diese Bedingungen treffen jedoch nicht auf alle COM-Eigenschaften zu. Die Excel-Eigenschaft Range verfügt beispielsweise über einen get-Accessor, der einen Parameter für den Namen des Bereichs erfordert. Da zuvor auf die Range-Eigenschaft nicht direkt zugegriffen werden konnte, musste stattdessen die get_Range-Methode verwendet werden. Beispiel:

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

Indizierte Eigenschaften ermöglichen stattdessen, Folgendes zu schreiben:

// Visual C# 2010.
var excelApp = new Excel.Application();
// . . .
Excel.Range targetRange = excelApp.Range["A1"];
Hinweis

Im vorherigen Beispiel wird auch die Funktion für optionale Argumente verwendet, die in Visual C# 2010 eingeführt wurde und Ihnen ermöglicht, Type.Missing wegzulassen.

Auf ähnliche Weise sind zum Festlegen des Werts der Value-Eigenschaft eines Range-Objekts in Visual C# 2008 und früher zwei Argumente erforderlich. Durch das erste Argument wird ein optionaler Parameter angegeben, der den Typ des Bereichswerts angibt. Mit dem zweiten Argument wird der Wert für die Value-Eigenschaft bereitgestellt. Vor Visual C# 2010 war in C# nur ein Argument gestattet. Daher musste statt einer regulär festgelegten Methode entweder die set_Value-Methode oder eine andere Eigenschaft verwendet werden, Value2. Die folgende Beispiele veranschaulichen diese Techniken. In beiden wird der Wert der Zelle "A1" auf Name festgelegt.

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

Indizierte Eigenschaften ermöglichen stattdessen, folgenden Code zu schreiben:

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

Sie können keine eigenen indizierten Eigenschaften erstellen. Die Funktion unterstützt lediglich die Nutzung vorhandener indizierter Eigenschaften.

Beispiel

Der folgende Code veranschaulicht ein vollständiges Beispiel. Weitere Informationen zum Einrichten eines Projekts, das auf die Office-API zugreift, finden Sie unter Gewusst wie: Zugreifen auf Office-Interop-Objekte mithilfe von Visual C#-Funktionen.

// 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";

        }
    }
}

Siehe auch

Benannte und optionale Argumente
dynamic
Verwenden von dynamischen Typen
Gewusst wie: Verwenden von benannten und optionalen Argumenten in der Office-Programmierung
Gewusst wie: Zugreifen auf Office-Interop-Objekte mithilfe von Visual C#-Funktionen
Exemplarische Vorgehensweise: Office-Programmierung