Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Type.GetFields (BindingFlags)

 

Data di pubblicazione: ottobre 2016

Quando ne viene eseguito l'override in una classe derivata, cerca i campi definiti per l'oggetto Type corrente, usando i vincoli di binding specificati.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

public abstract FieldInfo[] GetFields(
	BindingFlags bindingAttr
)

Parametri

bindingAttr
Type: System.Reflection.BindingFlags

Maschera di bit costituita da uno o più BindingFlags che consente di specificare le modalità di esecuzione della ricerca.

-oppure-

Zero, per restituire null.

Valore restituito

Type: System.Reflection.FieldInfo[]

Matrice di oggetti FieldInfo che rappresentano tutti i campi definiti per l'oggetto Type corrente corrispondente ai vincoli di binding specificati.

-oppure-

Matrice vuota di tipo FieldInfo, se non è definito alcun campo per l'oggetto Type corrente oppure se nessuno dei campi definiti corrisponde ai vincoli di binding.

Il GetFields metodo non restituisce i campi in un ordine specifico, ad esempio in ordine alfabetico o ordine di dichiarazione. Il codice non deve dipendere dall'ordine in cui vengono restituiti i campi, poiché tale ordine varia.

Le operazioni seguenti BindingFlags flag del filtro possono essere utilizzati per definire i campi da includere nella ricerca:

  • È necessario specificare BindingFlags.Instance o BindingFlags.Static per ottenere un risultato.

  • Specificare BindingFlags.Public per includere i campi pubblici nella ricerca.

  • Specificare BindingFlags.NonPublic per includere i campi non pubblici (ovvero, i campi privati, interni e protetti) nella ricerca. Solo protetti e vengono restituiti i campi interni delle classi base; i campi privati delle classi base non vengono restituiti.

  • Specificare BindingFlags.FlattenHierarchy includere public e protected membri statici nella gerarchia; private membri statici nelle classi ereditate non sono inclusi.

Le operazioni seguenti BindingFlags flag di modifica consente di modificare le modalità di ricerca:

  • BindingFlags.DeclaredOnlyPer cercare solo i campi dichiarati sul Type, non i campi sono stati ereditati.

Per altre informazioni, vedere System.Reflection.BindingFlags.

Se l'oggetto corrente Type rappresenta un tipo generico costruito, questo metodo restituisce il FieldInfo oggetti con i parametri di tipo sostituiti dagli argomenti di tipo appropriato.

Se l'oggetto corrente Type rappresenta un parametro di tipo nella definizione di un tipo o metodo generico, questo metodo cerca i campi pubblici del vincolo di classe.

Nell'esempio seguente viene illustrato un utilizzo della GetFields(BindingFlags) metodo.


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
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: