导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Type.GetProperty 方法 (String)

2013/12/13

搜索具有指定名称的公共属性。

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

public PropertyInfo GetProperty(
	string name
)

参数

name
类型: System.String
包含要获取的公共属性名的 String

返回值

类型: System.Reflection.PropertyInfo
表示具有指定名称的公共属性的 PropertyInfo 对象(如果找到的话);否则为 null

异常条件
AmbiguousMatchException

找到不止一个具有指定名称的属性。请参见“备注”。

ArgumentNullException

namenull

name 的搜索区分大小写。搜索范围包括公共静态属性和公共实例属性。

如果属性至少有一个为公共的访问器,则该属性被视为对于反射是公共的。否则,该属性被视为私有,而且您必须使用 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static(在 Visual Basic 中,使用 Or 将多个值合并在一起)来获取它。

如果当前 Type 表示某种已构造的泛型类型,则此方法将返回 PropertyInfo,并且其类型参数由相应的类型参数替换。

如果当前 Type 表示泛型类型或泛型方法的定义中的类型参数,则此方法搜索类约束的属性。

发生 AmbiguousMatchException 的情形包括以下几种:

  • 一种类型包含两个名称相同但参数数目不同的索引属性。要解析多义性,请使用 GetProperty 方法重载来指定参数类型。

  • 派生类型通过使用 new 修饰符(在 Visual Basic 中为 Shadows),声明隐藏同名继承属性的属性。要解析多义性,请使用 GetProperty(String, BindingFlags) 方法重载并包括 BindingFlags.DeclaredOnly 以限制对非继承成员的搜索。

索引器和默认属性

Visual Basic 2005、Visual C# 2005 和 Visual C++ 2005 具有用来访问索引属性的简化语法,并允许将一个索引属性设为其类型的默认属性。例如,如果变量 myList 引用 List<T>,则语法 myList[3] (在 Visual Basic 中为 myList(3))将检索索引为 3 的元素。您可以重载该属性。

在 C# 中,此功能称为索引器,而且不能按名称引用。默认情况下,C# 索引器在元数据中显示为具有“Item”名称的索引属性。但是,类库开发人员可以使用 IndexerNameAttribute 特性来更改元数据中索引器的名称。例如,String 类具有一个名为 Chars 的索引器。使用 C# 以外的语言创建的索引属性可以具有“Item”以外的名称。

若要确定某个类型是否具有默认属性,请使用 GetCustomAttributes(Type, Boolean) 方法来测试 DefaultMemberAttribute 特性。如果该类型具有 DefaultMemberAttribute,则 MemberName 属性返回默认属性的名称。

下面的示例检索用户定义类的 Type 对象,检索该类的属性,并显示属性名称。

说明注意:

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



using System;
using System.Reflection;

class MyClass
{
   private int myProperty;
   // Declare MyProperty.
   public int MyProperty
   {
      get
      {
         return myProperty;
      }
      set
      {
         myProperty = value;
      }
   }
}
public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      try
      {
         // Get the Type object corresponding to MyClass.
         Type myType = typeof(MyClass);
         // Get the PropertyInfo object by passing the property name.
         PropertyInfo myPropInfo = myType.GetProperty("MyProperty");
         // Display the property name.
         outputBlock.Text += String.Format("The {0} property exists in MyClass.", myPropInfo.Name) + "\n";
      }
      catch (NullReferenceException e)
      {
         outputBlock.Text += "The property does not exist in MyClass." + e.Message + "\n";
      }
   }
}


Windows Phone OS

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

Windows Phone

显示:
© 2014 Microsoft