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

Indizierte Eigenschaften verbessern die Verarbeitung von COM-Eigenschaften mit Parametern in der C#-Programmierung. Indizierte Eigenschaften arbeiten zusammen mit anderen Funktionen in Visual C#, wie z.B. benannte und optionale Argumente und neuen Typinformationen (dynamisch) und eingebettete Typinformationen, um die Microsoft Office-Programmierung zu verbessern.

In früheren Versionen von C# waren Methoden nur als Eigenschaften zugänglich, wenn die get-Methode keine Parameter und die set-Methode nur einen Wertparameter hatte. Allerdings erfüllen nicht alle COM-Eigenschaften diese Einschränkungen. Die Eigenschaft Range in Excel verfügt über eine get-Zugriffsmethode, für die ein Parameter für den Namen des Bereichs erforderlich ist. Früher mussten Sie stattdessen die get_Range-Methode verwenden, weil Sie nicht direkt auf die Range-Methode zugreifen konnten. Dies wird in folgendem Beispiel veranschaulicht.

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

Mit indizierte Eigenschaften können Sie stattdessen Folgendes schreiben:

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

Im vorherigen Beispiel wurde auch die Funktion Optionale Argumente verwendet, mit der Sie Type.Missing weglassen können.

Für das Festlegen der ValueEigenschaft des Range-Objekts in Visual C# 2008 oder früher sind zwei Argumente erforderlich. Eines dieser Argumente stellt ein Argument für einen optionalen Parameter bereit, der den Typ des Bereichswerts angibt. Das andere Argument stellt den Wert für die Value-Eigenschaft bereit. In den folgenden Beispielen werden diese Techniken veranschaulicht. Beide legen den Wert der Zelle A1 auf Name fest.

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

Mit indizierte Eigenschaften können Sie stattdessen folgenden Code schreiben.

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

Sie können nicht Ihre eigenen indizierten Eigenschaften erstellen. Die Funktion unterstützt nur die Nutzung vorhandener indizierter Eigenschaften.

Beispiel

Der folgende Code veranschaulicht das vollständige Beispiel. Weitere Informationen zum Einrichten eines Projekts, das auf die Office-API zugreift, finden Sie unter Vorgehensweise: 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
Vorgehensweise: Verwenden von benannten und optionalen Argumenten in der Office-Programmierung
Vorgehensweise: Zugreifen auf Office-Interop-Objekte mithilfe von Visual C#-Funktionen
Exemplarische Vorgehensweise: Office-Programmierung