DefaultMemberAttribute 类

2013/12/13

定义某类型的成员,该成员是 InvokeMember 使用的默认成员。

System.Object
  System.Attribute
    System.Reflection.DefaultMemberAttribute

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

[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Interface|AttributeTargets.Struct)]
public sealed class DefaultMemberAttribute : Attribute

DefaultMemberAttribute 类型公开以下成员。

  名称说明
公共方法DefaultMemberAttribute初始化 DefaultMemberAttribute 类的新实例。
返回顶部

  名称说明
公共属性MemberName从特性中获取名称。
返回顶部

  名称说明
公共方法Equals基础结构。 返回一个值,该值指示此实例是否与指定的对象相等。 (从 Attribute 继承。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetHashCode返回此实例的哈希代码。 (从 Attribute 继承。)
公共方法GetType获取当前实例的 Type (从 Object 继承。)
公共方法Match当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (从 Attribute 继承。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法ToString返回一个字符串,它表示当前的对象。 (从 Object 继承。)
返回顶部

如果属性带有参数,或者属性的名称或其某个访问器的名称与 DefaultMemberAttribute 属性指定的名称匹配,则该属性作为索引器导入(Visual Basic 中的默认索引属性)。如果包含类型中不存在 DefaultMemberAttribute,则该类型没有索引器。C# 编译器对包含索引器的任何类型发出 DefaultMemberAttribute。在 C# 中,如果某个类型已经声明了索引器,则使用 DefaultMemberAttribute 手动为该类型指定特性是一种错误。

下面的示例使用 DefaultMemberAttribute 特性使 Age 属性成为 MyClass 类的默认成员。



using System;
using System.Reflection;
using System.IO;

[DefaultMemberAttribute("Age")]
public class Example
{
   public void Name(String s) { }
   public int Age
   {
      get
      {
         return 20;
      }
   }
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      try
      {
         Type myType = typeof(Example);
         MemberInfo[] memberInfoArray = myType.GetDefaultMembers();
         if (memberInfoArray.Length > 0)
         {
            foreach (MemberInfo memberInfoObj in memberInfoArray)
            {
               outputBlock.Text += "The default member name is: " + memberInfoObj.ToString() + "\n";
            }
         }
         else
         {
            outputBlock.Text += "No default members are available." + "\n";
         }
      }
      catch (InvalidOperationException e)
      {
         outputBlock.Text += "InvalidOperationException: " + e.Message + "\n";
      }
      catch (IOException e)
      {
         outputBlock.Text += "IOException: " + e.Message + "\n";
      }
      catch (Exception e)
      {
         outputBlock.Text += "Exception: " + e.Message + "\n";
      }
   }
}


Windows Phone OS

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

Windows Phone

此类型的所有公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

显示:
© 2014 Microsoft