(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, BindingFlags)

Sucht die angegebene Eigenschaft unter Verwendung der angegebenen Bindungseinschränkungen.

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

public PropertyInfo GetProperty(
	string name,
	BindingFlags bindingAttr
)

Parameter

name
Typ: System.String
Die Zeichenfolge, die den Namen der abzurufenden Eigenschaft enthält.
bindingAttr
Typ: System.Reflection.BindingFlags
Eine Bitmaske aus einem oder mehreren BindingFlags, die angeben, wie die Suche durchgeführt wird.
- oder -
0 (null), damit null zurückgegeben wird.

Rückgabewert

Typ: System.Reflection.PropertyInfo
Ein Objekt, das die Eigenschaft darstellt, die den angegebenen Anforderungen entspricht, sofern diese gefunden wird. Andernfalls null.

Implementiert

_Type.GetProperty(String, BindingFlags)
IReflect.GetProperty(String, BindingFlags)

AusnahmeBedingung
AmbiguousMatchException

Es wurde mehr als eine Eigenschaft mit dem angegebenen Namen gefunden, die den angegebenen Bindungseinschränkungen entspricht. Siehe Hinweise.

ArgumentNullException

name 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.

Über die folgenden BindingFlags-Filterflags kann festgelegt werden, welche Eigenschaften in die Suche einbezogen werden:

  • Es wird nur dann ein Ergebnis zurückgegeben, wenn entweder BindingFlags.Instance oder BindingFlags.Static angegeben wird.

  • Geben Sie BindingFlags.Public an, um öffentliche Eigenschaften in die Suche einzubeziehen.

  • Geben Sie BindingFlags.NonPublic an, um nicht öffentliche Eigenschaften d. h. private, interne und geschützte Eigenschaften, in die Suche einzubeziehen.

  • Geben Sie BindingFlags.FlattenHierarchy an, um statische public-Member und protected-Member in der Hierarchie einzuschließen. Statische private-Member in vererbten Klassen sind nicht eingeschlossen.

Die Funktionsweise der Suche kann über die folgenden BindingFlags-Modifiziererflags beeinflusst werden:

  • BindingFlags.IgnoreCase , wenn die Groß- und Kleinschreibung von name nicht berücksichtigt werden soll.

  • BindingFlags.DeclaredOnly , wenn ausschließlich nach für Type deklarierten Eigenschaften gesucht werden soll und nicht nach Eigenschaften, die nur geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

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.

AmbiguousMatchException tritt u. a. in den folgenden Situationen auf:

  • Ein Typ enthält zwei indizierte Eigenschaften, die über den gleichen Namen, jedoch über unterschiedlich viele Parameter verfügen. Zum Auflösen der Mehrdeutigkeit verwenden Sie eine Überladung der GetProperty-Methode, die Parametertypen angibt.

  • Ein abgeleiteter Typ deklariert eine Eigenschaft, die eine geerbte Eigenschaft mit dem gleichen Namen verbirgt, indem der new-Modifizierer verwendet wird (Shadows in Visual Basic). Schließen Sie zum Auflösen der Mehrdeutigkeit BindingFlags.DeclaredOnly ein, um die Suche auf nicht geerbte Member einzuschränken.

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 werden der Typ einer benutzerdefinierten Klasse und eine Eigenschaft dieser Klasse abgerufen und der Eigenschaftenname entsprechend den angegebenen Bindungseinschränkungen angezeigt.



using System;
using System.Reflection;
class MyClass
{
    private int myProperty;
    // Declare MyProperty.
    public int MyProperty
    {
        get
        {
            return myProperty;
        }
        set
        {
            myProperty=value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        {
            // Get Type object of MyClass.
            Type myType=typeof(MyClass);       
            // Get the PropertyInfo by passing the property name and specifying the BindingFlags.
            PropertyInfo myPropInfo = myType.GetProperty("MyProperty", BindingFlags.Public | BindingFlags.Instance);
            // Display Name propety to console.
            Console.WriteLine("{0} is a property of MyClass.", myPropInfo.Name);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("MyProperty does not exist in MyClass." +e.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

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.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
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft