信息
您所需的主题如下所示。但此主题未包含在此库中。

MemberInfo.GetCustomAttributes 方法 (Boolean)

2013/12/13

在派生类中重写时,返回应用于此成员的所有自定义特性的数组。

Namespace:  System.Reflection
程序集:  mscorlib(位于 mscorlib.dll 中)

public abstract Object[] GetCustomAttributes(
	bool inherit
)

参数

inherit
类型: System.Boolean
如果搜索此成员的继承链以查找这些特性,则为 true;否则为 false。属性和事件中忽略此参数;请参见“备注”

返回值

类型: System.Object []
一个包含应用于此成员的所有自定义特性的数组,在未定义任何属性时为包含零个元素的数组。

实现

ICustomAttributeProvider.GetCustomAttributes(Boolean)

异常条件
TypeLoadException

未能加载自定义特性类型。

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

版本说明

Windows Phone

 某些特性构造函数参数和属性值可能会导致 MemberInfo.GetCustomAttributes 失败。

下面的示例定义一个自定义特性并将其与 MyClass.MyMethod 相关联,然后在运行时检索该特性,并显示结果。

说明注意:

要运行此示例,请参见生成具有静态 Windows Phone TextBlock 控件的示例


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 Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      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++)
         {
            Object[] myAttributes = myMembers[i].GetCustomAttributes(true);
            if (myAttributes.Length > 0)
            {
               outputBlock.Text += String.Format("\nThe attributes for the member {0} are: \n", myMembers[i]) + "\n";
               for (int j = 0; j < myAttributes.Length; j++)
                  outputBlock.Text += String.Format("The type of the attribute is {0}.", myAttributes[j]) + "\n";
            }
         }
      }
      catch (Exception e)
      {
         outputBlock.Text += String.Format("An exception occurred: {0}", e.Message) + "\n";
      }
   }
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示: