Indizierte Eigenschaften bei der COM-Interop-Programmierung

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

Wichtig

VSTO (Visual Studio Tools for Office) basiert auf .NET Framework. COM-Add-Ins können auch mit .NET Framework geschrieben werden. Office-Add-Ins können nicht mit .NET Core und .NET 5 und höher erstellt werden, den neuesten Versionen von .NET. Dies liegt daran, dass .NET Core/.NET 5 und höher nicht mit .NET Framework im selben Prozess zusammenarbeiten und daher zu Add-In-Ladefehlern führen kann. Sie können .NET Framework weiterhin zum Schreiben von VSTO- und COM-Add-Ins für Office verwenden. Microsoft aktualisiert VSTO oder die COM-Add-In-Plattform nicht, um .NET Core oder .NET 5 und höher zu verwenden. Sie können .NET Core und .NET 5 und höher nutzen, einschließlich ASP.NET Core, um die Serverseite von Office Web-Add-Ins zu erstellen.

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

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

Mit indizierte Eigenschaften können Sie den 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 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();
        }

        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