Type.GetProperties()方法用于获取当前Type的属性。此方法的重载列表中有2种方法,如下所示:
- GetProperties()方法
- GetProperties(BindingFlags)方法
GetProperties()方法
此方法用于返回当前Type的所有公共属性。
Syntax: public System.Reflection.PropertyInfo[] GetProperties ();
Return Value: This method returns an array of PropertyInfo objects representing all public properties of the current Type or an empty array of type PropertyInfo if the current Type does not have public properties.
下面的程序说明了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的属性。
Syntax: public abstract System.Reflection.PropertyInfo[] GetProperties (System.Reflection.BindingFlags bindingAttr);
Here, it takes a bitmask comprised of one or more BindingFlags that specify how the search is conducted or Zero, to return null.
Return Value: This method returns an array of PropertyInfo objects representing all properties of the current Type that match the specified binding constraints or an empty array of type PropertyInfo, if the current Type does not have properties, or if none of the properties match the binding constraints.
范例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