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, BindingFlags, Binder, Type, Type[], ParameterModifier[])

 

Veröffentlicht: Oktober 2016

Sucht anhand der angegebenen Bindungseinschränkungen nach der angegebenen Eigenschaft, deren Parameter den angegebenen Argumenttypen und -modifizierern entsprechen.

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

public PropertyInfo GetProperty(
	string name,
	BindingFlags bindingAttr,
	Binder binder,
	Type returnType,
	Type[] types,
	ParameterModifier[] modifiers
)

Parameter

name
Type: System.String

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

bindingAttr
Type: 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.

binder
Type: System.Reflection.Binder

Ein Objekt, das eine Gruppe von Eigenschaften definiert und eine Bindung ermöglicht. Dazu kann die Auswahl einer überladenen Methode, die Umwandlung von Argumenttypen und der Aufruf eines Members durch Reflektion gehören.

- oder -

Ein Nullverweis (Nothing in Visual Basic), wenn DefaultBinder verwendet werden soll.

returnType
Type: System.Type

Der Rückgabetyp der Eigenschaft.

types
Type: 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
Type: 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

Type: System.Reflection.PropertyInfo

Ein Objekt, das die Eigenschaft darstellt, die den angegebenen Anforderungen entspricht, sofern diese gefunden wird. Andernfalls null.

Exception Condition
AmbiguousMatchException

Es wurden mehrere Eigenschaften gefunden, die den angegebenen Namen aufweisen und den angegebenen Bindungseinschränkungen entsprechen.

ArgumentNullException

name ist null.

- oder -

types ist null.

ArgumentException

types ist mehrdimensional.

- oder -

modifiers ist mehrdimensional.

- oder -

types und modifiers weisen nicht die gleiche Länge auf.

NullReferenceException

Ein Element von types ist null.

Eine Eigenschaft ist öffentlich sein, um Reflektion betrachtet, wenn sie mindestens eine Zugriffsmethode aufweist, die öffentlich ist. Andernfalls wird die Eigenschaft als privat betrachtet, und Sie müssen BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, kombinieren Sie die Werte mit Or) zum Abrufen.

Obwohl der Standardbinder nicht verarbeitet ParameterModifier (die modifiers Parameter), können Sie die abstrakte System.Reflection.Binder Klasse, um einen benutzerdefinierten Binder zu schreiben, die verarbeitet werden modifiers. ParameterModifierwird nur verwendet werden, wenn der Aufruf über COM-Interop und nur als Verweis übergebenen Parameter behandelt.

Die folgende Tabelle zeigt, welche Member einer Basisklasse von zurückgegeben werden die Get Methoden, wenn für einen Typ reflektieren.

Memberart

Statisch

Nicht statische

Konstruktor

Nein

Nein

Feld

Nein

Ja. Ein Feld ist immer nach Name und Signatur ausblenden.

Ereignis

Nicht zutreffend

Das allgemeine Typsystem ist, dass die Vererbung ist identisch mit der Methoden, die die Eigenschaft zu implementieren. Reflektion behandelt Eigenschaften als nach Name und Signatur ausblenden. Siehe Hinweis 2 weiter unten.

Methode

Nein

Ja. Eine Methode (virtuelle und nicht virtuell) möglich nach Namen verdeckte oder nach Name und Signatur ausblenden.

Geschachtelten Typs

Nein

Nein

Eigenschaft

Nicht zutreffend

Das allgemeine Typsystem ist, dass die Vererbung ist identisch mit der Methoden, die die Eigenschaft zu implementieren. Reflektion behandelt Eigenschaften als nach Name und Signatur ausblenden. Siehe Hinweis 2 weiter unten.

  1. Nach Name und Signatur ausblenden berücksichtigt, dass alle Teile der Signatur, die benutzerdefinierten Modifizierer, einschließlich Typen, Parametertypen Sentinels enthält und nicht verwalteten Aufrufkonventionen zurückgeben. Dies ist ein binärer Vergleich.

  2. Für die Reflektion sind die Eigenschaften und Ereignisse nach Name und Signatur ausblenden. Wenn Sie eine Eigenschaft mit einer Get und Set-Zugriffsmethode in der Basisklasse haben, aber hat nur einen Get-Accessor für die abgeleitete Klasse, die Eigenschaft der abgeleiteten Klasse ausgeblendet die Basisklasseneigenschaft und nicht den Setter für die Basisklasse zugreifen werden.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Die folgenden BindingFlags Filterkennzeichnungen genutzt werden, welche Eigenschaften in die Suche einbezogen werden:

  • Geben Sie BindingFlags.Instance oder BindingFlags.Static ändern, um einen Rückgabewert zu erhalten.

  • Geben Sie BindingFlags.Public auf öffentliche Eigenschaften in die Suche einbeziehen.

  • Geben Sie BindingFlags.NonPublic an nicht öffentlichen Eigenschaften (d. h. private, interne und geschützte) in die Suche einbeziehen.

  • Geben Sie BindingFlags.FlattenHierarchy einschließen public und protected statische Member der Hierarchie; nach oben private statische Member in geerbten Klassen sind nicht eingeschlossen.

Die folgenden BindingFlags Modifiziererflags können verwendet werden, um die ändern, wie die Suche funktioniert:

  • BindingFlags.IgnoreCaseum die Groß-/Kleinschreibung ignorieren name.

  • BindingFlags.DeclaredOnlySuche nur die deklarierten Eigenschaften der Type, nicht die Eigenschaften, die nur geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

Wenn die aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode die PropertyInfo mit Parametern für den durch die entsprechenden Typargumente ersetzt.

Wenn die aktuelle Type stellt einen Typparameter in der Definition einer generischen Typ- oder Methodendefinition, diese Methode sucht die Eigenschaften der Class-Einschränkung.

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

In c# ist diese Funktion einen Indexer aufgerufen wird und nicht erteilt wurde, die anhand des Namens. Standardmäßig wird als eine indizierte Eigenschaft mit dem Namen "Item" ein C#-Indexers in den Metadaten angezeigt. Entwickeln einer Klassenbibliothek können jedoch die IndexerNameAttribute Attribut zum Ändern des Namens des Indexers in den Metadaten. Z. B. die String -Klasse verfügt über einen Indexer mit dem Namen Chars. Indizierte Eigenschaften, die mit anderen Sprachen als c# erstellt können auch die Namen als Element haben. 

Um zu bestimmen, ob ein Typ eine Standardeigenschaft vorhanden ist, verwenden die GetCustomAttributes(Type, Boolean) -Methode zur Prüfung auf die DefaultMemberAttribute Attribut. Wenn der Typ besitzt DefaultMemberAttributedie MemberName Eigenschaft gibt den Namen der Standardeigenschaft zurück.

.NET Framework
Verfügbar seit 1.1
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: