Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo Type.GetMembers (BindingFlags)

Quando è sottoposto a override in una classe derivata, cerca i membri definiti per il Type corrente, utilizzando i vincoli di associazione specificati.

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

public abstract MemberInfo[] GetMembers(
	BindingFlags bindingAttr
)

Parametri

bindingAttr
Tipo: System.Reflection.BindingFlags
Maschera di bit costituita da uno o più BindingFlags che consentono di specificare le modalità di esecuzione della ricerca.
- oppure -
Zero (BindingFlags.Default), per restituire una matrice vuota.

Valore restituito

Tipo: System.Reflection.MemberInfo[]
Matrice di oggetti MemberInfo che rappresentano tutti i membri definiti per il Type corrente corrispondenti ai vincoli di associazione specificati.
- oppure -
Matrice vuota di tipo MemberInfo, se non vi sono membri definiti per il Type corrente oppure se nessuno dei membri definiti corrisponde ai vincoli di associazione.

Implementa

_Type.GetMembers(BindingFlags)
IReflect.GetMembers(BindingFlags)

I membri comprendono proprietà, metodi, campi, eventi e così via.

Il metodo GetMembers non restituisce i membri in un ordine particolare, ad esempio l'ordine alfabetico o di dichiarazione. Il codice non deve dipendere dall'ordine in cui i membri vengono restituiti perché tale ordine varia.

È possibile utilizzare i seguenti flag di filtro BindingFlags per definire i membri da includere nella ricerca:

  • Per ottenere un risultato è necessario specificare BindingFlags.Instance o BindingFlags.Static.

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

  • Specificare BindingFlags.NonPublic per includere nella ricerca i membri di tipo non pubblico, ovvero i membri privati, interni e protetti. Vengono restituiti solo i membri protetti ed i membri interni delle classi base; i membri privati delle classi base non vengono restituiti.

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

È possibile utilizzare i seguenti flag di modifica BindingFlags per modificare le modalità di esecuzione della ricerca:

  • BindingFlags.DeclaredOnly per cercare solo i membri dichiarati su Type e non quelli semplicemente ereditati.

La chiamata di questo metodo con il solo flag Public oppure con il flag NonPublic restituisce i membri specificati e non richiede nessun altro flag.

Per ulteriori informazioni, vedere System.Reflection.BindingFlags.

Per ottenere l'inizializzatore di classi (con estensione cctor) tramite l'overload di questo metodo, è necessario specificare BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Per ottenere l'inizializzatore di classi, è inoltre possibile utilizzare la proprietà TypeInitializer.

Se l'oggetto T:System.Type corrente rappresenta un tipo generico costruito, questo metodo restituisce gli oggetti MemberInfo con i parametri di tipo sostituiti dagli argomenti di tipo appropriati.

Se l'oggetto Type corrente rappresenta un parametro di tipo nella definizione di un tipo o di un metodo generico, mediante questo metodo vengono cercati i membri del vincolo di classe o i membri di Object se non sono presenti vincoli di classe.

Nell'esempio di codice seguente viene illustrato come utilizzare l'overload del metodo GetMembers(BindingFlags) per raccogliere informazioni su tutti i membri delle istanze pubbliche di una classe specificata.



class MyClass
{
   public int myInt = 0;
   public string myString = null;

   public MyClass()
   {
   }
   public void Myfunction()
   {
   }
}

class Type_GetMembers_BindingFlags
{
   public static void Main()
   {
      try
      {
         MyClass MyObject = new MyClass();
         MemberInfo [] myMemberInfo; 

         // Get the type of the class 'MyClass'.
         Type myType = MyObject.GetType(); 

         // Get the public instance members of the class 'MyClass'. 
         myMemberInfo = myType.GetMembers(BindingFlags.Public|BindingFlags.Instance);

         Console.WriteLine( "\nThe public instance members of class '{0}' are : \n", myType); 
         for (int i =0 ; i < myMemberInfo.Length ; i++)
         {
            // Display name and type of the member of 'MyClass'.
            Console.WriteLine( "'{0}' is a {1}", myMemberInfo[i].Name, myMemberInfo[i].MemberType);
         }

      }
      catch (SecurityException e)
      {
         Console.WriteLine("SecurityException : " + e.Message ); 
      }      

      //Output:
      //The public instance members of class 'MyClass' are :

      //'Myfunction' is a Method
      //'ToString' is a Method
      //'Equals' is a Method
      //'GetHashCode' is a Method
      //'GetType' is a Method
      //'.ctor' is a Constructor
      //'myInt' is a Field
      //'myString' is a Field

   }
}



.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft