Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การดึงฟิลด์ทั้งหมดของ Type ใน C#

ภาพรวม

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