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)

 

Veröffentlicht: Oktober 2016

Sucht die öffentliche Eigenschaft mit dem angegebenen Namen.

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

public PropertyInfo GetProperty(
	string name
)

Parameter

name
Type: System.String

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

Rückgabewert

Type: System.Reflection.PropertyInfo

Ein Objekt, das die öffentliche Eigenschaft mit dem angegebenen Namen darstellt, sofern gefunden, andernfalls null.

Exception Condition
AmbiguousMatchException

Es wurden mehrere Eigenschaften mit dem angegebenen Namen gefunden. Siehe Hinweise.

ArgumentNullException

name ist null.

Die Suche nach name Groß-/Kleinschreibung beachtet. Die Suche enthält öffentliche statische und öffentlichen Instanzeigenschaften.

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.

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.

Situationen, in denen AmbiguousMatchException tritt auf, umfassen Folgendes:

  • Ein Typ enthält zwei indizierte Eigenschaften, die den gleichen Namen, jedoch eine unterschiedliche Anzahl von Parametern. Um die Mehrdeutigkeit zu beheben, verwenden Sie eine Überladung der GetProperty Methode, die Parametertypen angibt.

  • Ein abgeleiteter Typ deklariert eine Eigenschaft, die eine geerbte Eigenschaft mit dem gleichen Namen, blendet die new Modifizierer (Shadows in Visual Basic). Um die Mehrdeutigkeit zu beheben, verwenden die GetProperty(String, BindingFlags) -methodenüberladung, und fügen die BindingFlags.DeclaredOnly Flag, um die Suche auf Member zu beschränken, die nicht geerbt werden.

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.

Das folgende Beispiel ruft die Type Objekt einer benutzerdefinierten Klasse ruft eine Eigenschaft dieser Klasse ab und zeigt den Namen der Eigenschaft.


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 the Type object corresponding to MyClass.
            Type myType=typeof(MyClass);       
            // Get the PropertyInfo object by passing the property name.
            PropertyInfo myPropInfo = myType.GetProperty("MyProperty");
            // Display the property name.
            Console.WriteLine("The {0} property exists in MyClass.", myPropInfo.Name);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("The property does not exist in MyClass." + e.Message);
        }
    }
}

Intern wird diese Eigenschaft in den Metadaten mit dem Namen "Item". bezeichnet Jeder Versuch zum Abrufen PropertyInfo über Reflektion ermöglicht diesen internen Namen angeben muss, um ordnungsgemäß Zurückgeben der PropertyInfo Eigenschaft.

.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: