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 MemberInfo.GetCustomAttributes (Type, Boolean)

 

Data di pubblicazione: agosto 2016

Quando viene sottoposto a override in una classe derivata, questo metodo restituisce una matrice di attributi personalizzati applicati a questo membro e identificati da Type.

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

public abstract object[] GetCustomAttributes(
	Type attributeType,
	bool inherit
)

Parametri

attributeType
Type: System.Type

Tipo di attributo da cercare. Vengono restituiti solo gli attributi assegnabili a questo tipo.

inherit
Type: System.Boolean

true per eseguire la ricerca nella catena di ereditarietà del membro per trovare gli attributi; in caso contrario, false. Questo parametro viene ignorato in caso di proprietà ed eventi; vedere la sezione Osservazioni.

Valore restituito

Type: System.Object[]

Matrice degli attributi personalizzati applicati a questo membro o matrice con zero elementi se non è stato applicato alcun attributo assegnabile a attributeType.

Exception Condition
TypeLoadException

Non è possibile caricare un tipo di attributo personalizzato.

ArgumentNullException

Se attributeType è null.

InvalidOperationException

Questo membro appartiene a un tipo caricato nel contesto Reflection-Only. Vedere How to: Load Assemblies into the Reflection-Only Context.

Questo metodo ignora la inherit parametro per le proprietà e gli eventi. Per cercare la catena di ereditarietà per gli attributi di proprietà ed eventi, usare l'overload appropriato del Attribute.GetCustomAttributes metodo.

System_CAPS_noteNota

In .NET Framework versione 2.0, questo metodo restituisce gli attributi di sicurezza su tipi, metodi e costruttori, se gli attributi vengono archiviati nel nuovo formato dei metadati. Gli assembly compilati con la versione 2.0 utilizzano questo formato. Gli assembly dinamici e gli assembly compilati con le versioni precedenti di .NET Framework utilizzano il formato XML precedente. Vedere creazione di attributi di sicurezza dichiarativa.

L'esempio seguente definisce una classe denominata BaseClass che contiene due membri non ereditati: un campo statico thread denominato total e un metodo non conformi a CLS denominato MethodA. Una classe denominata DerivedClass eredita da BaseClass ed esegue l'override relativo MethodA metodo. Si noti che non gli attributi vengono applicati ai membri di DerivedClass. L'esempio scorre i membri di DerivedClass per determinare se il CLSCompliantAttribute o ThreadStaticAttribute dell'attributo da esse. Poiché inherit è true, il metodo cerca nella gerarchia di ereditarietà di DerivedClass per l'attributo specificato. Come illustrato nell'esempio, l'output di total campo è decorato con il ThreadStaticAttribute attributo e MethodA è decorato con il CLSCompliantAttribute attributo.

using System;

public class BaseClass
{
   [ThreadStatic] public int total;

   [CLSCompliant(false)] public virtual uint MethodA()
   {
      return (uint) 100;
   }
}

public class DerivedClass : BaseClass
{
   public override uint MethodA()
   {
      total++;
      return 200;
   }
}

public class Example
{
   public static void Main()
   {
      Type t = typeof(DerivedClass);
      Console.WriteLine("Members of {0}:", t.FullName);
      foreach (var m in t.GetMembers())
      {
         bool hasAttribute = false;
         Console.Write("   {0}: ", m.Name);
         if (m.GetCustomAttributes(typeof(CLSCompliantAttribute), true).Length > 0) {
            Console.Write("CLSCompliant");
            hasAttribute = true;
         }
         if (m.GetCustomAttributes(typeof(ThreadStaticAttribute), true).Length > 0) {
            Console.Write("ThreadStatic");
            hasAttribute = true;
         }
         if (! hasAttribute)
            Console.Write("No attributes");

         Console.WriteLine();
      }
   }
}
// The example displays the following output:
//       Members of DerivedClass:
//          MethodA: CLSCompliant
//          ToString: No attributes
//          Equals: No attributes
//          GetHashCode: No attributes
//          typeof: No attributes
//          .ctor: No attributes
//          total: ThreadStatic

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