System.Reflection.MemberInfo.IsDefined 方法

方法描述

在派生类中重写时,指示是否将指定类型或其派生类型的一个或多个特性应用于此成员。

语法定义(C# System.Reflection.MemberInfo.IsDefined 方法 的用法)

public abstract bool IsDefined(
	Type attributeType,
	bool inherit
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
attributeType System-Type 要搜索的自定义特性的类型。该搜索包括派生类型。
inherit System-Boolean 搜索此成员的继承链以查找这些特性,则为 true;否则为 false。属性和事件中忽略此参数,请参见“备注”。
返回值 System.Boolean 如果将 attributeType 或其任何派生类型的一个或多个实例应用于此成员,则为 true;否则为 false。

提示和注释

此方法忽略属性和事件的 inherit 参数。 若要针对属性和事件搜索特性的继承链,请使用 Attribute.IsDefined 方法的适当重载。

注意

在 .NET Framework 2.0 版中,如果类型、方法或构造函数的安全特性是采用新的元数据格式存储的,则此方法将返回 true。 用 2.0 版编译的程序集使用此格式。 动态程序集和用 .NET Framework 的早期版本编译的程序集使用旧的 XML 格式。 请参见发出声明性安全特性。

System.Reflection.MemberInfo.IsDefined 方法例子

下面的示例确定所指定特性是否应用于所指定成员。

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);
        }
    }
}

异常

异常 异常描述

命名空间

namespace: System.Reflection

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。