MemberInfo.IsDefined(Type, Boolean) Metodo

Definizione

Quando se ne effettua l'override in una classe derivata, indica se a questo membro sono applicati uno o più attributi del tipo specificato o dei tipi derivati.

public abstract bool IsDefined (Type attributeType, bool inherit);

Parametri

attributeType
Type

Tipo di attributo personalizzato da cercare. La ricerca include i tipi derivati.

inherit
Boolean

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

Restituisce

true se una o più istanze di attributeType o qualsiasi suo tipo derivato viene applicato al membro; in caso contrario, false.

Implementazioni

Esempio

Nell'esempio seguente viene determinato se l'attributo specificato viene applicato al membro specificato.

using System;
using System.Reflection;

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

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

public class MemberInfo_GetCustomAttributes_IsDefined
{
    public static void Main()
    {
        try
        {
            // Get the type of MyClass1.
            Type myType = typeof(MyClass1);
            // Get the members associated with MyClass1.
            MemberInfo[] myMembers = myType.GetMembers();

            // Display the attributes for each of the members of MyClass1.
            for(int i = 0; i < myMembers.Length; i++)
            {
                // Display the attribute if it is of type MyAttribute.
                if(myMembers[i].IsDefined(typeof(MyAttribute), false))
                {
                    Object[] myAttributes = myMembers[i].GetCustomAttributes(typeof(MyAttribute), false);
                    Console.WriteLine("\nThe attributes of type MyAttribute for the member {0} are: \n",
                        myMembers[i]);
                    for(int j = 0; j < myAttributes.Length; j++)
                        // Display the value associated with the attribute.
                        Console.WriteLine("The value of the attribute is : \"{0}\"",
                            ((MyAttribute)myAttributes[j]).Name);
                }
            }
        }
        catch(Exception e)
        {
            Console.WriteLine("An exception occurred: {0}", e.Message);
        }
    }
}

Commenti

Questo metodo ignora il inherit parametro per proprietà ed eventi. Per cercare la catena di ereditarietà per gli attributi sulle proprietà e sugli eventi, usare gli overload appropriati del Attribute.IsDefined metodo.

Nota

In .NET Framework versione 2.0 questo metodo restituisce true se un tipo, un metodo o un costruttore ha attributi di sicurezza archiviati nel nuovo formato dei metadati. Gli assembly compilati con la versione 2.0 usano questo formato. Gli assembly e gli assembly dinamici compilati con le versioni precedenti di .NET Framework usano il formato XML precedente. Vedere Emissione di attributi di sicurezza dichiarativi.

Si applica a

Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1