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

 

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

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

bindingAttr

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

Type: System.Reflection.PropertyInfo

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

Exception Condition
AmbiguousMatchException

Wurde mehr als eine Eigenschaft mit dem angegebenen Namen gefunden, die angegebene Bindung entspricht.Siehe Hinweise.

ArgumentNullException

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

Die folgenden BindingFlags Filterflags kann festgelegt werden, welche Eigenschaften in die Suche einbezogen werden:

  • Geben Sie BindingFlags.Instance oder BindingFlags.Static um ein Ergebnis zurückgegeben.

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

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

  • Geben Sie BindingFlags.FlattenHierarchy eingeschlossen public und protected statische Member aus der Hierarchie; private statische Member in vererbten Klassen sind nicht eingeschlossen.

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

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

  • BindingFlags.DeclaredOnly deklarierten Eigenschaften suchen die 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 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.

Situationen, in denen AmbiguousMatchException tritt auf, unter anderem die folgenden:

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

  • Ein abgeleiteter Typ deklariert eine Eigenschaft, die eine geerbte Eigenschaft mit dem gleichen Namen verbirgt mithilfe der new Modifizierer (Shadows in Visual Basic).Um die Mehrdeutigkeit aufzulösen, gehören BindingFlags.DeclaredOnly um die Suche auf Elemente beschränken, die nicht geerbt werden.

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.

Das folgende Beispiel ruft den Typ einer benutzerdefinierten Klasse ab, eine Eigenschaft dieser Klasse abgerufen und der Eigenschaftenname in Übereinstimmung mit der 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
Verfügbar seit 1.1
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen:
© 2016 Microsoft