Porady: użycie właściwości indeksowanych w programowaniu usługi międzyoperacyjnej modelu COM (Przewodnik programowania w języku C#)
Indeksowane właściwości poprawy sposobu, w którym COM właściwości, które mają parametry są zużywane w C# Programowanie.Indeksowane pracy właściwości wraz z innych funkcji wprowadzonych w Visual C# 2010, takich jak Argumenty nazwane i opcjonalnie, nowy typ (dynamiczne), i Wpisz osadzone informacje, aby zwiększyć programowania pakietu Microsoft Office.
We wcześniejszych wersjach języka C#, metody są dostępne jako właściwości tylko wtedy, gdy get metoda nie ma żadnych parametrów i set metoda ma tylko jeden parametr wartość.Jednak nie wszystkie właściwości COM spełniają te ograniczenia.Na przykład, program Excel zakres właściwość ma get akcesor wymaga parametru Nazwa zakresu.W przeszłości ponieważ nie można uzyskać dostępu Range właściwości bezpośrednio, trzeba było używać get_Range metoda zamiast, jak pokazano w poniższym przykładzie.
// Visual C# 2008 and earlier.
var excelApp = new Excel.Application();
// . . .
Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing);
Właściwości indeksowanych umożliwiają zamiast pisać następujące czynności:
// Visual C# 2010.
var excelApp = new Excel.Application();
// . . .
Excel.Range targetRange = excelApp.Range["A1"];
[!UWAGA]
Poprzedni przykład używa również argumentów opcjonalnych funkcji wprowadzonych w Visual C# 2010 r., które pozwala pominąć Type.Missing.
Podobnie Aby ustawić wartość Value właściwość zakres obiektu w programie Visual C# 2008 i wcześniej, wymagane są dwa argumenty.Argument opcjonalny parametr, który określa typ wartości zakresu jednej dostawy.Dostarcza drugiej wartości dla Value właściwości.Przed Visual C# 2010 C# dozwolony tylko jeden argument.W związku z tym, zamiast przy użyciu metody zestaw regularnych, trzeba było używać set_Value metody lub właściwości różnych, wartość2.Poniższe przykłady ilustrują tych technik.Zarówno wartość z komórki A1 do Name.
// Visual C# 2008.
targetRange.set_Value(Type.Missing, "Name");
// Or
targetRange.Value2 = "Name";
Właściwości indeksowanych umożliwiają zamiast pisać następujący kod.
// Visual C# 2010.
targetRange.Value = "Name";
Nie można utworzyć właściwości indeksowanych własny.Ta funkcja obsługuje tylko zużycie istniejące właściwości indeksowanych.
Przykład
Poniższy kod przedstawia przykład kompletne.Aby uzyskać więcej informacji o sposobach konfigurowania projektu, który uzyskuje dostęp do interfejsu API pakietu Office, zobacz Porady: uzyskiwanie dostępu do obiektów międzyoperacyjności pakietu Office za pomocą funkcji Visual C# (Przewodnik po programowaniu w języku 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";
}
}
}
Zobacz też
Zadania
Wskazówki: Programowanie Office (C# i Visual Basic)
Informacje
Koncepcje
Argumenty nazwane i opcjonalne (Przewodnik programowania w języku C#)
Inne zasoby
Używanie typu dynamicznego (Przewodnik programowania w języku C#)