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 ParameterInfo.GetCustomAttributes (Boolean)

 

Data di pubblicazione: novembre 2016

Ottiene tutti gli attributi personalizzati definiti su questo parametro.

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

public virtual object[] GetCustomAttributes(
	bool inherit
)

Parametri

inherit
Type: System.Boolean

Questo argomento viene ignorato per gli oggetti di questo tipo. Vedere la sezione Osservazioni.

Valore restituito

Type: System.Object[]

Matrice che contiene tutti gli attributi personalizzati applicati a questo parametro.

Exception Condition
TypeLoadException

Impossibile caricare un tipo di attributo personalizzato.

Questo metodo ignora la inherit parametro. Per ricercare la catena di ereditarietà per gli attributi ai parametri, utilizzare l'overload appropriato del Attribute.GetCustomAttributes metodo.

Nell'esempio seguente viene illustrato come attributi che sono stati applicati a parametri dei metodi possono essere recuperati in fase di esecuzione. Nell'esempio viene definito un attributo personalizzato denominato MyAttribute che possono essere applicati ai parametri. Nell'esempio viene quindi definita una classe denominata MyClass con un metodo denominato MyMethod, e applica MyAttribute a un parametro del metodo.

Quando viene eseguito l'esempio, utilizza il GetCustomAttributes(Boolean) per recuperare gli attributi personalizzati applicati a tutti i parametri di tutti i metodi in MyClass, e li visualizza nella console.

using System;
using System.Reflection;

// Define a custom attribute with one named parameter.
[AttributeUsage(AttributeTargets.Parameter)]
public class MyAttribute : Attribute
{
    private string myName;
    public MyAttribute(string name)
    {
        myName = name;
    }
    public string Name 
    {
        get 
        {
            return myName;
        }
    }
}

// Define a class which has a custom attribute associated with one of the 
// parameters of a method. 
public class MyClass1
{
    public void MyMethod(
        [MyAttribute("This is an example parameter attribute")]
        int i)
    {
        return;
    }
}

public class MemberInfo_GetCustomAttributes 
{
    public static void Main()
    {
        // Get the type of the class 'MyClass1'.
        Type myType = typeof(MyClass1);
        // Get the members associated with the class 'MyClass1'.
        MethodInfo[] myMethods = myType.GetMethods();

        // Display the attributes for each of the parameters of each method of the class 'MyClass1'.
        for(int i = 0; i < myMethods.Length; i++)
        {
            // Get the parameters for the method.
            ParameterInfo[] myParameters = myMethods[i].GetParameters();

            if (myParameters.Length > 0)
            {
                Console.WriteLine("\nThe parameters for the method {0} that have custom attributes are :", myMethods[i]);
                for(int j = 0; j < myParameters.Length; j++)
                {
                    // Get the attributes of type 'MyAttribute' for each parameter.
                    Object[] myAttributes = myParameters[j].GetCustomAttributes(typeof(MyAttribute), false);

                    if (myAttributes.Length > 0)
                    {
                        Console.WriteLine("Parameter {0}, name = {1}, type = {2} has attributes: ", 
                            myParameters[j].Position, myParameters[j].Name, myParameters[j].ParameterType);
                        for(int k = 0; k < myAttributes.Length; k++)
                        {
                            Console.WriteLine("\t{0}", myAttributes[k]);
                        }
                    }
                }
            }
        }  
    }
}
/* This code example produces the following output:

The parameters for the method Void MyMethod(Int32) that have custom attributes are :
Parameter 0, name = i, type = System.Int32 has attributes:
        MyAttribute

The parameters for the method Boolean Equals(System.Object) that have custom attributes are :
 */

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