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

การดึงฟิลด์เฉพาะของ Type ปัจจุบันใน C#

ภาพรวม

Type.GetField(string name) ดึงข้อมูล FieldInfo ของฟิลด์ public ที่ระบุชื่อ โยน ArgumentNullException หากชื่อเป็น null

ตัวอย่างที่ 1: ดึงฟิลด์ SubName จากคลาส Subject

using System;
using System.Reflection;

public class Demo
{
    public static void Main()
    {
        Type type = typeof(Subject);

        try
        {
            FieldInfo fieldInfo = type.GetField("SubName");
            Console.WriteLine("FieldInfo = {0}", fieldInfo);
        }
        catch (ArgumentNullException e)
        {
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

public class Subject
{
    public string SubName = "Science";
}

ผลลัพธ์

FieldInfo = System.String SubName

ตัวอย่างที่ 2: พยายามดึงฟิลด์ด้วยชื่อ null (โยน Exception)

using System;
using System.Reflection;

public class Demo
{
    public static void Main()
    {
        Type type = typeof(Subject);

        try
        {
            FieldInfo fieldInfo = type.GetField(null);
            Console.WriteLine("FieldInfo = {0}", fieldInfo);
        }
        catch (ArgumentNullException e)
        {
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

public class Subject
{
    public string SubName = "Science";
}

ผลลัพธ์

System.ArgumentNullException

สรุป

  • GetField() ค้นหาเฉพาะฟิลด์ public (instance หรือ static)
  • ต้องการ BindingFlags เพื่อค้นหา non-public หรือ static โดยเฉพาะ
  • คืนค่า null หากไม่พบฟิลด์ (ไม่โยน exception)
  • ชื่อฟิลด์เป็น null จะโยน ArgumentNullException