Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Type.GetProperty-Methode (String, Type[])

 

Sucht die angegebene öffentliche Eigenschaft, deren Parameter den angegebenen Argumenttypen entsprechen.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public PropertyInfo GetProperty(
	string name,
	Type[] types
)

Parameter

name

Die Zeichenfolge, die den Namen der abzurufenden öffentlichen Eigenschaft enthält.

types

Ein Array von Type-Objekten, die Anzahl, Reihenfolge und Typ der Parameter der abzurufenden indizierten Eigenschaft darstellen.

- oder -

Ein leeres Array vom Type-Typ, d. h. Type[] types = new Type[0], zum Abrufen einer nicht indizierten Eigenschaft.

Rückgabewert

Type: System.Reflection.PropertyInfo

Ein Objekt, das die öffentliche Eigenschaft darstellt, deren Parameter den angegebenen Argumenttypen entsprechen, sofern gefunden, andernfalls null.

Exception Condition
AmbiguousMatchException

Wurde mehr als eine Eigenschaft mit dem angegebenen Namen und die angegebenen Argumenttypen entsprechen.

ArgumentNullException

name ist null.

- oder -

types ist null.

ArgumentException

types ist mehrdimensional.

NullReferenceException

Ein Element des types ist null.

Eine Eigenschaft ist Reflektion als öffentlich betrachtet, die öffentlich ist mindestens ein Accessor aufweist.Andernfalls wird die Eigenschaft als privat betrachtet müssen, und Sie BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, kombinieren Sie die Werte mit Or) um es abzurufen.

Bei der Suche nach name Groß-/Kleinschreibung beachtet.Die Suche schließt öffentliche statische und öffentlichen Instanzeigenschaften.

Wenn die aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode die PropertyInfo wobei die Typparameter durch die entsprechenden Typargumente ersetzt.

Wenn die aktuelle Type stellt einen Typparameter in der Definition des generischen Typs oder einer generischen Methode, durchsucht diese Methode die Eigenschaften der Klasseneinschränkung.

Visual Basic 2005, Visual C# 2005, und Visual C++ 2005 bieten eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen eine indizierte Eigenschaft einen Standardwert für den Typ sein.Angenommen, wenn die Variable myList bezieht sich auf eine ArrayList, die Syntax myList[3] (myList(3) in Visual Basic) Ruft das Element mit dem Index 3.Sie können die Eigenschaft überladen.

In c# wird dieses Feature als Indexer bezeichnet und Verweise über den Namen nicht möglich.Standardmäßig wird die ein C#-Indexers in den Metadaten als indizierte Eigenschaft mit dem Namen "Item".Entwickeln einer Klassenbibliothek können jedoch die IndexerNameAttribute Attribut zum Ändern des Namens des Indexers in den Metadaten.Zum Beispiel die String -Klasse verfügt über einen Indexer mit dem Namen Chars. Indizierte Eigenschaften, die mit anderen Sprachen als c# erstellt haben auch die Namen anstelle von Item.

Bestimmt, ob ein Typ über eine Standardeigenschaft verfügt, verwenden Sie die GetCustomAttributes(Type, Boolean) Methode zum Testen der DefaultMemberAttribute Attribut.Wenn der Typ verfügt über DefaultMemberAttribute, die MemberName -Eigenschaft gibt den Namen der Standardeigenschaft zurück.

Im folgenden Beispiel wird die Type Objekt einer benutzerdefinierten Klasse ruft die Eigenschaft dieser Klasse ab, und zeigt den Eigenschaftsnamen und den Typ der Eigenschaft gemäß der übergebenen Argumente GetProperty.


using System;
using System.Reflection;
class MyClass1
{         
    private int [,] myArray = {{1,2},{3,4}}; 
    // Declare an indexer.
    public int this [int i,int j]   
    {
        get 
        {
            return myArray[i,j];
        }
        set 
        {
            myArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        { 
            // Get the Type object.
            Type myType=typeof(MyClass1);       
            Type[] myTypeArr = new Type[2];
            // Create an instance of a Type array.
            myTypeArr.SetValue(typeof(int),0);            
            myTypeArr.SetValue(typeof(int),1);
            // Get the PropertyInfo object for the indexed property Item, which has two integer parameters. 
            PropertyInfo myPropInfo = myType.GetProperty("Item", myTypeArr);
            // Display the property.
            Console.WriteLine("The {0} property exists in MyClass1.", myPropInfo.ToString());
        }           
        catch(NullReferenceException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Source : {0}" , e.Source);
            Console.WriteLine("Message : {0}" , e.Message);
        }
    }
}

.NET Framework
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: