ภาพรวม
Type.GetFields(BindingFlags) ดึงอาร์เรย์ FieldInfo ของฟิลด์ตามเงื่อนไข (public, non-public, static, instance) ใช้ namespace System.Reflection
ตัวอย่างที่ 1: ดึง non-public static fields ของ System.String
using System;
using System.Reflection;
public class Demo
{
public static void Main()
{
Type type = typeof(System.String);
FieldInfo[] fields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic);
Console.WriteLine("Following are the non-public fields=");
foreach (FieldInfo myField in fields)
{
Console.WriteLine(myField.ToString());
}
}
}
ผลลัพธ์
Following are the non-public fields= Int32 TrimHead Int32 TrimTail Int32 TrimBoth Int32 charPtrAlignConst Int32 alignConst
ตัวอย่างที่ 2: ดึง non-public static fields ของ System.Char
using System;
using System.Reflection;
public class Demo
{
public static void Main()
{
Type type = typeof(System.Char);
FieldInfo[] fields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic);
Console.WriteLine("\nFollowing are the non-public fields=");
foreach (FieldInfo myField in fields)
{
Console.WriteLine(myField.ToString());
}
}
}
ผลลัพธ์
Following are the non-public fields= Byte[] categoryForLatin1 Int32 UNICODE_PLANE00_END Int32 UNICODE_PLANE01_START Int32 UNICODE_PLANE16_END Int32 HIGH_SURROGATE_START Int32 LOW_SURROGATE_END
สรุป
- ใช้
BindingFlagsรวมกันได้:Static | NonPublic,Instance | Public, ฯลฯ GetFields()ไม่มีพารามิเตอร์ = ดึง public instance fields เท่านั้น- FieldInfo มีข้อมูล: ชื่อ, ชนิด, attributes, ค่า (สำหรับ static)
- Reflection ต้องการสิทธิ์เต็ม (full trust) อาจไม่ทำงานใน sandbox