(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

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

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

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

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

Parameter

name
Typ: System.String
Die Zeichenfolge, die den Namen der abzurufenden öffentlichen Eigenschaft enthält.
returnType
Typ: System.Type
Der Rückgabetyp der Eigenschaft.
types
Typ: System.Type[]
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.
modifiers
Typ: System.Reflection.ParameterModifier[]
Ein Array von ParameterModifier-Objekten, die die Attribute darstellen, die dem entsprechenden Element im types-Array zugeordnet sind. Der Standardbinder verarbeitet diesen Parameter nicht.

Rückgabewert

Typ: System.Reflection.PropertyInfo
Ein Objekt, das die öffentliche Eigenschaft darstellt, die den angegebenen Anforderungen entspricht, sofern gefunden, andernfalls null.

Implementiert

_Type.GetProperty(String, Type, Type[], ParameterModifier[])

AusnahmeBedingung
AmbiguousMatchException

Es wurde mehr als eine Eigenschaft mit dem angegebenen Namen gefunden, die den angegebenen Argumenttypen und -modifizierern entspricht.

ArgumentNullException

name ist null.

- oder -

types ist null.

ArgumentException

types ist mehrdimensional.

- oder -

modifiers ist mehrdimensional.

- oder -

types und modifiers haben nicht dieselbe Länge.

NullReferenceException

Ein Element von types ist null.

Eine Eigenschaft wird von der Reflektion als öffentlich betrachtet, wenn sie mindestens einen öffentlichen Accessor besitzt. Andernfalls wird die Eigenschaft als privat betrachtet, und Sie müssen BindingFlags.NonPublic verwenden. | BindingFlags.Instance | BindingFlags.Static (kombinieren Sie in Visual Basic die Werte mit Or), um abzurufen.

Obwohl der Standardbinder ParameterModifier (den modifiers-Parameter) nicht verarbeitet, können Sie die abstrakte System.Reflection.Binder-Klasse verwenden, um einen benutzerdefinierten Binder zu schreiben, der modifiers verarbeitet. ParameterModifier wird nur bei Aufrufen über COM-Interop verwendet. Es werden außerdem nur Parameter berücksichtigt, die als Verweis übergeben werden.

Bei der Suche nach name wird die Groß- und Kleinschreibung berücksichtigt. Die Suche schließt öffentliche statische Eigenschaften und öffentliche Instanzeigenschaften ein.

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

Wenn der aktuelle Type einen Typparameter einer generischen Typ- oder Methodendefinition darstellt, durchsucht diese Methode die Eigenschaften der Klasseneinschränkung.

Indexer und Standardeigenschaften

Visual Basic 2005, Visual C# 2005 und Visual C++ 2005 bieten eine vereinfachte Syntax für den Zugriff auf indizierte Eigenschaften und ermöglichen es, eine indizierte Eigenschaft als Standardeigenschaft für den zugehörigen Typ festzulegen. Wenn z. B. die Variable myList auf eine ArrayList verweist, wird mit der Syntax myList[3] (myList(3) in Visual Basic) das Element an Indexposition 3 abgerufen. Sie können die Eigenschaft überladen.

In C# wird dieses Feature als Indexer bezeichnet, und es sind keine Verweise über den Namen möglich. Standardmäßig wird ein C#-Indexer in den Metadaten als indizierte Eigenschaft mit dem Namen "Item" aufgeführt. Beim Entwickeln einer Klassenbibliothek kann der Name des Indexers in den Metadaten jedoch mithilfe des IndexerNameAttribute-Attributs geändert werden. So verfügt beispielsweise die String-Klasse über einen Indexer mit dem Namen Chars. Indizierte Eigenschaften, die in anderen Sprachen als C# erstellt wurden, können ebenfalls andere Namen anstelle von Item verwenden.

Um zu ermitteln, ob ein Typ über eine Standardeigenschaft verfügt, verwenden Sie die GetCustomAttributes(Type, Boolean)-Methode und überprüfen das DefaultMemberAttribute-Attribut. Wenn der Typ ein DefaultMemberAttribute besitzt, gibt die MemberName-Eigenschaft den Namen der Standardeigenschaft zurück.

Im folgenden Beispiel wird ein Type-Objekt abgerufen, das MyPropertyClass entspricht. Außerdem wird die indizierte Eigenschaft dieser Klasse mithilfe der an die GetProperty-Methode übergebenen Argumente abgerufen.


using System;
using System.Reflection;
public class MyPropertyClass
{
    private int [,] myPropertyArray = new int[10,10]; 
    // Declare an indexer.
    public int this [int i,int j]
    {
        get 
        {
            return myPropertyArray[i,j];
        }
        set 
        {
            myPropertyArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main()
    {
        try
        {
            Type myType=typeof(MyPropertyClass);
            Type[] myTypeArray = new Type[2];
            // Create an instance of the Type array representing the number, order 
            // and type of the parameters for the property.
            myTypeArray.SetValue(typeof(int),0);
            myTypeArray.SetValue(typeof(int),1);
            // Search for the indexed property whose parameters match the
            // specified argument types and modifiers.
            PropertyInfo myPropertyInfo = myType.GetProperty("Item",
                typeof(int),myTypeArray,null);
            Console.WriteLine(myType.FullName + "." + myPropertyInfo.Name + 
                " has a property type of " + myPropertyInfo.PropertyType);
         }
        catch(Exception ex)
        {
            Console.WriteLine("An exception occurred " + ex.Message);
        }
    }
}


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft