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

 

Veröffentlicht: Oktober 2016

Sucht beim Überschreiben in einer abgeleiteten Klasse unter Verwendung der angegebenen Bindungseinschränkungen die für den aktuellen Type definierten Felder.

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

public abstract FieldInfo[] GetFields(
	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.FieldInfo[]

Ein Array von FieldInfo-Objekten, die sämtliche für den aktuellen Type definierten öffentlichen Felder darstellen, die den angegebenen Bindungseinschränkungen entsprechen.

- oder -

Ein leeres Array vom FieldInfo-Typ, wenn für den aktuellen Type keine Felder definiert sind oder keines der definierten Felder den Bindungseinschränkungen entspricht.

Die GetFields Methode gibt keinen zurück Felder in einer bestimmten Reihenfolge, z. B. alphabetische oder Reihenfolge der Deklaration. Der Code muss nicht richten sich nach der Reihenfolge, in der Felder zurückgegeben werden, da, bei der Reihenfolge.

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

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

  • Geben Sie BindingFlags.Public öffentliche Felder in die Suche eingeschlossen werden sollen.

  • Geben Sie BindingFlags.NonPublic nicht öffentlichen Felder (d. h. private, interne und geschützte Felder) in die Suche eingeschlossen werden sollen. Nur geschützte und interne Felder für Basisklassen werden zurückgegeben. private Felder für Basisklassen werden nicht zurückgegeben.

  • 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.DeclaredOnlySuchen Sie nur die Felder, die deklariert wird, auf die Type, nicht nach Feldern, 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 FieldInfo Objekte 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 öffentlichen Felder von der Class-Einschränkung.

Das folgende Beispiel veranschaulicht die Verwendung von der GetFields(BindingFlags) Methode.


using System;
using System.Reflection;

class AttributesSample
{
    public void Mymethod (int int1m, out string str2m, ref string str3m)
    {
        str2m = "in Mymethod";
    }

    public static int Main(string[] args)
    {      
        Console.WriteLine ("Reflection.MethodBase.Attributes Sample");

        // Get the type.
        Type MyType = Type.GetType("AttributesSample");

        // Get the method Mymethod on the type.
        MethodBase Mymethodbase = MyType.GetMethod("Mymethod");

        // Display the method name.
        Console.WriteLine("Mymethodbase = " + Mymethodbase);

        // Get the MethodAttribute enumerated value.
        MethodAttributes Myattributes = Mymethodbase.Attributes;

        // Display the flags that are set.
        PrintAttributes(typeof(System.Reflection.MethodAttributes), (int) Myattributes);
        return 0;
    }


    public static void PrintAttributes(Type attribType, int iAttribValue)
    {
        if (!attribType.IsEnum)
        { 
            Console.WriteLine("This type is not an enum."); 
            return; 
        }

        FieldInfo[] fields = attribType.GetFields(BindingFlags.Public | BindingFlags.Static);
        for (int i = 0; i < fields.Length; i++)
        {
            int fieldvalue = (Int32)fields[i].GetValue(null);
            if ((fieldvalue & iAttribValue) == fieldvalue)
            {
                Console.WriteLine(fields[i].Name);
            }
        }
    }
}

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