Gewusst wie: Indizierte Eigenschaften bei der COM-Interop-Programmierung (C#-Programmierhandbuch)How to: Use Indexed Properties in COM Interop Programming (C# Programming Guide)

Indizierte Eigenschaften verbessern die Verarbeitung von COM-Eigenschaften mit Parametern in der C#-Programmierung.Indexed properties improve the way in which COM properties that have parameters are consumed in C# programming. 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.Indexed properties work together with other features in Visual C#, such as named and optional arguments, a new type (dynamic), and embedded type information, to enhance Microsoft Office programming.

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.In earlier versions of C#, methods are accessible as properties only if the get method has no parameters and the set method has one and only one value parameter. Allerdings erfüllen nicht alle COM-Eigenschaften diese Einschränkungen.However, not all COM properties meet those restrictions. Die Eigenschaft Range in Excel verfügt über eine get-Zugriffsmethode, für die ein Parameter für den Namen des Bereichs erforderlich ist.For example, the Excel Range property has a get accessor that requires a parameter for the name of the range. 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.In the past, because you could not access the Range property directly, you had to use the get_Range method instead, as shown in the following example.

// 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:Indexed properties enable you to write the following instead:

// 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.The previous example also uses the optional arguments feature, which enables you to omit Type.Missing.

Für das Festlegen der ValueEigenschaft des Range-Objekts in Visual C# 2008 oder früher sind zwei Argumente erforderlich.Similarly to set the value of the Value property of a Range object in Visual C# 2008 and earlier, two arguments are required. Eines dieser Argumente stellt ein Argument für einen optionalen Parameter bereit, der den Typ des Bereichswerts angibt.One supplies an argument for an optional parameter that specifies the type of the range value. Das andere Argument stellt den Wert für die Value-Eigenschaft bereit.The other supplies the value for the Value property. In den folgenden Beispielen werden diese Techniken veranschaulicht.The following examples illustrate these techniques. Beide legen den Wert der Zelle A1 auf Name fest.Both set the value of the A1 cell to Name.

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

Mit indizierte Eigenschaften können Sie stattdessen folgenden Code schreiben.Indexed properties enable you to write the following code instead.

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

Sie können nicht Ihre eigenen indizierten Eigenschaften erstellen.You cannot create indexed properties of your own. Die Funktion unterstützt nur die Nutzung vorhandener indizierter Eigenschaften.The feature only supports consumption of existing indexed properties.

BeispielExample

Der folgende Code veranschaulicht das vollständige Beispiel.The following code shows a complete example. 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.For more information about how to set up a project that accesses the Office API, see How to: Access Office Interop Objects by Using Visual C# Features.

// 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 auchSee Also

Benannte und optionale ArgumenteNamed and Optional Arguments
dynamicdynamic
Verwenden von dynamischen TypenUsing Type dynamic
Gewusst wie: Verwenden von benannten und optionalen Argumenten in der Office-ProgrammierungHow to: Use Named and Optional Arguments in Office Programming
Gewusst wie: Zugreifen auf Office-Interop-Objekte mithilfe von Visual C#-FunktionenHow to: Access Office Interop Objects by Using Visual C# Features
Exemplarische Vorgehensweise: Office-ProgrammierungWalkthrough: Office Programming