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.GetProperties-Methode: (BindingFlags)

 

Veröffentlicht: Oktober 2016

Sucht beim Überschreiben in einer abgeleiteten Klasse unter Verwendung der angegebenen Bindungseinschränkungen die Eigenschaften des aktuellen Type.

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

public abstract PropertyInfo[] GetProperties(
	BindingFlags bindingAttr
)

Parameter

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.

Rückgabewert

Type: System.Reflection.PropertyInfo[]

Ein Array von PropertyInfo-Objekten, die sämtliche Eigenschaften des aktuellen Type darstellen, die den angegebenen Bindungseinschränkungen entsprechen.

- oder -

Ein leeres Array vom PropertyInfo-Typ, wenn der aktuelle Type keine Eigenschaften besitzt oder keine der Eigenschaften den Bindungseinschränkungen entspricht.

Eine Eigenschaft ist Reflektion als öffentlich betrachtet mindestens einen Accessor 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) um sie zu erhalten.

Die GetProperties Methode kehrt Eigenschaften in einer bestimmten Reihenfolge, z. B. alphabetische oder Reihenfolge der Deklaration. Code muss nicht abhängig von der Reihenfolge, in der Eigenschaften zurückgegeben werden, da, das variieren kann.

Die folgenden BindingFlags Filter Flags verwendet werden, können zu definieren, welche geschachtelten Typen in die Suche einbeziehen:

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

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

  • Geben Sie BindingFlags.NonPublic nicht öffentliche Eigenschaften (d. h. private, interne und geschützte Eigenschaften) in die Suche einbezogen. Nur geschützte und interne Eigenschaften für Basisklassen werden zurückgegeben. Private Eigenschaften für Basisklassen werden nicht zurückgegeben.

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

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

  • BindingFlags.DeclaredOnly nur die deklarierten Eigenschaften suchen die Type, nicht die Eigenschaften, die nur geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

Eine Eigenschaft ist Reflektion als öffentlich betrachtet mindestens einen Accessor 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) um sie zu erhalten.

Wenn der aktuelle t: System.Type einen konstruierten generischen Typ darstellt, gibt diese Methode die PropertyInfo Objekte, wobei die Typparameter durch die entsprechenden Typargumente ersetzt.

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

Das folgende Beispiel definiert eine Klasse namens PropertyClass sechs Eigenschaften enthält: zwei sind öffentlich werden privat ist, ist eine geschützt, interne (Friend in Visual Basic), und eine interne geschützt ist (Protected Friend in Visual Basic). Es zeigt dann einige grundlegende Informationen (die Eigenschaftennamen und, ob es sich um Lese-/Schreibzugriff und die Sichtbarkeit von seiner get und set Accessoren) für die Eigenschaften, die mit die angegebenen bindungseinschränkungen übereinstimmen.

using System;
using System.Reflection;

// Create a class having six properties.
public class PropertyClass
{
    public String Property1
    {
        get { return "hello"; }
    }

    public String Property2
    {
        get { return "hello"; }
    }

    protected String Property3
    {
        get { return "hello"; }
    }

    private Int32 Property4
    {
        get { return 32; }
    }

    internal String Property5
    {
       get { return "value"; }
    }

    protected internal String Property6
    {
       get { return "value"; }
    }
}

public class Example
{
    public static void Main() 
    {
        Type t = typeof(PropertyClass);
        // Get the public properties.
        PropertyInfo[] propInfos = t.GetProperties(BindingFlags.Public|BindingFlags.Instance);
        Console.WriteLine("The number of public properties: {0}.\n",
                          propInfos.Length);
        // Display the public properties.
        DisplayPropertyInfo(propInfos);

        // Get the nonpublic properties.
        PropertyInfo[] propInfos1 = t.GetProperties(BindingFlags.NonPublic|BindingFlags.Instance);
        Console.WriteLine("The number of non-public properties: {0}.\n",
                          propInfos1.Length);
        // Display all the nonpublic properties.
        DisplayPropertyInfo(propInfos1);
    }

    public static void DisplayPropertyInfo(PropertyInfo[] propInfos)
    {
        // Display information for all properties.
        foreach (var propInfo in propInfos) {
            bool readable = propInfo.CanRead;
            bool writable = propInfo.CanWrite;

            Console.WriteLine("   Property name: {0}", propInfo.Name);
            Console.WriteLine("   Property type: {0}", propInfo.PropertyType);
            Console.WriteLine("   Read-Write:    {0}", readable & writable);
            if (readable) {
               MethodInfo getAccessor = propInfo.GetMethod;
               Console.WriteLine("   Visibility:    {0}",
                                 GetVisibility(getAccessor));
            }
            if (writable) {
               MethodInfo setAccessor = propInfo.SetMethod;
               Console.WriteLine("   Visibility:    {0}",
                                 GetVisibility(setAccessor));
            }
            Console.WriteLine();
        }
    }

    public static String GetVisibility(MethodInfo accessor)
    {
       if (accessor.IsPublic)
          return "Public";
       else if (accessor.IsPrivate)
          return "Private";
       else if (accessor.IsFamily)
          return "Protected";
       else if (accessor.IsAssembly)
          return "Internal/Friend";
       else
          return "Protected Internal/Friend";
    }
}
// The example displays the following output:
//       The number of public properties: 2.
//
//          Property name: Property1
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Public
//
//          Property name: Property2
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Public
//
//       The number of non-public properties: 4.
//
//          Property name: Property3
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Protected
//
//          Property name: Property4
//          Property type: System.Int32
//          Read-Write:    False
//          Visibility:    Private
//
//          Property name: Property5
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Internal/Friend
//
//          Property name: Property6
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Protected Internal/Friend

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