📜  C#| Type.GetProperties()方法

📅  最后修改于: 2021-05-29 14:42:59             🧑  作者: Mango

Type.GetProperties()方法用于获取当前Type的属性。此方法的重载列表中有2种方法,如下所示:

  • GetProperties()方法
  • GetProperties(BindingFlags)方法

GetProperties()方法

此方法用于返回当前Type的所有公共属性。

下面的程序说明了Type.GetProperties()方法的用法:

范例1:

// C# program to demonstrate the
// Type.GetProperties() Method
using System;
using System.Globalization;
using System.Reflection;
  
// Defining class Empty
public class Empty { }
  
class GFG {
  
    // Main Method
    public static void Main()
    {
        // Declaring and initializing object of Type
        Type objType = typeof(string);
  
        // try-catch block for handling Exception
        try {
  
            // using GetProperties() Method
            PropertyInfo[] type = objType.GetProperties();
  
            // Display the Result
            Console.WriteLine("Properties of current type is: ");
            for (int i = 0; i < type.Length; i++)
                Console.WriteLine(" {0}", type[i]);
        }
  
        // catch ArgumentNullException here
        catch (ArgumentNullException e)
        {
            Console.Write("name is null.");
            Console.Write("Exception Thrown: ");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}
输出:
Properties of current type is: 
 Int32 Length
 Char Chars [Int32]

范例2:

// C# program to demonstrate the
// Type.GetProperties() Method
using System;
using System.Globalization;
using System.Reflection;
  
// Defining class Empty
public class Empty {}
  
class GFG {
  
    // Main Method
    public static void Main()
    {
        // Declaring and initializing object of Type
        Type objType = typeof(System.Type);
  
        // try-catch block for handling Exception
        try {
  
            // using GetProperties() Method
            PropertyInfo[] type = objType.GetProperties();
  
            // Display the Result
            Console.WriteLine("Properties of current type is: ");
            for (int i = 0; i < 10; i++)
                Console.WriteLine(" {0}", type[i]);
        }
  
        // catch ArgumentNullException here
        catch (ArgumentNullException e) 
        {
            Console.Write("name is null.");
            Console.Write("Exception Thrown: ");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}
输出:
Properties of current type is: 
 System.Reflection.MemberTypes MemberType
 System.Type DeclaringType
 System.Reflection.MethodBase DeclaringMethod
 System.Type ReflectedType
 System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute
 System.Guid GUID
 System.Reflection.Binder DefaultBinder
 System.Reflection.Module Module
 System.Reflection.Assembly Assembly
 System.RuntimeTypeHandle TypeHandle

GetProperties(BindingFlags)方法

此方法用于在派生类中重写时使用指定的绑定约束来搜索当前Type的属性。

范例1:

// C# program to demonstrate the
// Type.GetProperties(BindingFlags)
// Method
using System;
using System.Globalization;
using System.Reflection;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
        // Declaring and initializing object of Type
        Type objType = typeof(Dog);
  
        // using GetProperties() Method
        PropertyInfo[] type = objType.GetProperties(BindingFlags.Instance | BindingFlags.Public);
  
        // Display the Result
        Console.WriteLine("Properties of current type is: ");
        for (int i = 0; i < type.Length; i++)
            Console.WriteLine(" {0}", type[i]);
    }
}
  
// Defining class Dog
public class Dog {
  
    private string color, breed, type;
  
    // Constructor
    public Dog(string color, string breed, string type)
    {
        this.color = color;
        this.breed = breed;
        this.type = type;
    }
  
    // Color Property
    public String Color
    {
        get { return color; }
    }
  
    // Breed Property
    public String Breed
    {
        get { return breed; }
    }
  
    // Type Property
    public String Type
    {
        get { return type; }
    }
  
    // BloodGroup Property
    private String BloodGroup
    {
        get { return "AB+"; }
    }
}
输出:
Properties of current type is: 
 System.String Color
 System.String Breed
 System.String Type

范例2:

// C# program to demonstrate the
// Type.GetProperties(BindingFlags)
// Method
using System;
using System.Globalization;
using System.Reflection;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
        // Declaring and initializing object of Type
        Type objType = typeof(Dog);
  
        // using GetProperties() Method
        PropertyInfo[] type = objType.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic);
  
        // Display the Result
        Console.WriteLine("Properties of current type is: ");
        for (int i = 0; i < type.Length; i++)
            Console.WriteLine(" {0}", type[i]);
    }
}
  
// Defining class Dog
public class Dog {
  
    private string color, breed, type, bp;
  
    // Constructor
    public Dog(string color, string breed,
                   string type, string bp)
    {
        this.color = color;
        this.breed = breed;
        this.type = type;
        this.bp = bp;
    }
  
    // Color Property
    public String Color
    {
        get { return color; }
    }
  
    // Breed Property
    public String Breed
    {
        get { return breed; }
    }
  
    // Type Property
    public String Type
    {
        get { return type; }
    }
  
    // BloodGroup Property
    protected String BloodGroup
    {
        get { return "AB+"; }
    }
  
    // BloodPressure Property
    protected String BloodPressure
    {
        get { return bp; }
    }
}
输出:
Properties of current type is: 
 System.String BloodGroup
 System.String BloodPressure

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.type.getproperties?view=netframework-4.8