System.Type.GetProperties 方法 (BindingFlags)

方法描述

当在派生类中重写时,使用指定绑定约束,搜索当前 Type 的如果属性至少有一个为公共的访问器,则该属性被视为对于反射是公共的。

语法定义(C# System.Type.GetProperties 方法 (BindingFlags) 的用法)

public abstract PropertyInfo[] GetProperties(
	BindingFlags bindingAttr
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
bindingAttr System-Reflection-BindingFlags 一个位屏蔽,由一个或多个指定搜索执行方式的 BindingFlags 组成。- 或 -零,以返回 null。
返回值 System.Reflection.PropertyInfo[] 表示当前 Type 的匹配指定绑定约束的所有属性的 PropertyInfo 对象数组。 - 或 - 如果当前 Type 没有属性,或者如果没有一个属性匹配绑定约束,则为 PropertyInfo 类型的空数组。

提示和注释

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

GetProperties 方法不按特定的顺序(如字母顺序或声明顺序)返回属性。 您的代码一定不能依赖于属性的返回顺序,因为该顺序可以改变。

可以使用下列 BindingFlags 筛选标志定义包含在搜索中的嵌套类型:

为了获取返回值,必须指定 BindingFlags.Instance 或 BindingFlags.Static。

指定 BindingFlags.Public 可在搜索中包含公共属性。

指定 BindingFlags.NonPublic 可在搜索中包含非公共属性(即私有属性、内部属性和受保护属性)。 只返回基类上的受保护属性和内部属性;不返回基类上的私有属性。

指定 BindingFlags.FlattenHierarchy 以便沿层次结构向上包括 public 和 protected 静态成员;不包括继承类中的 private 静态成员。

下列 BindingFlags 修饰符标志可用于更改搜索的执行方式:

BindingFlags.DeclaredOnly ,表示仅搜索 Type 上声明的属性,而不搜索被简单继承的属性。

有关更多信息,请参见 System.Reflection.BindingFlags。

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

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

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

System.Type.GetProperties 方法 (BindingFlags)例子

下面的示例创建两个公共属性和一个受保护属性,并显示与指定绑定约束相匹配的属性的信息。

using System;
using System.Reflection;
using System.Reflection.Emit;

// Create a class having three properties.
public class MyTypeClass
{
    public String MyProperty1
    {
        get 
        {
            return "hello";
        }
    }
    public String MyProperty2 
    {
        get 
        {
            return "hello";
        }
    }
    protected String MyProperty3
    {
        get
        {
            return "hello";
        }
    }
}

public class TypeMain
{
    public static void Main() 
    {
        Type myType =(typeof(MyTypeClass));
        // Get the public properties.
        PropertyInfo[] myPropertyInfo = myType.GetProperties(BindingFlags.Public|BindingFlags.Instance);
        Console.WriteLine("The mumber of public properties is {0}.", myPropertyInfo.Length);
        // Display the public properties.
        DisplayPropertyInfo(myPropertyInfo);
        // Get the nonpublic properties.
        PropertyInfo[] myPropertyInfo1 = myType.GetProperties(BindingFlags.NonPublic|BindingFlags.Instance);
        Console.WriteLine("The number of protected properties is {0}.", myPropertyInfo1.Length);
        // Display all the nonpublic properties.
        DisplayPropertyInfo(myPropertyInfo1);		
    }
    public static void DisplayPropertyInfo(PropertyInfo[] myPropertyInfo)
    {
        // Display information for all properties.
        for(int i=0;i

异常

异常 异常描述

命名空间

namespace: System

程序集: 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 系统要求。