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

การดึงชนิดข้อมูล巢狂เฉพาะภายใน Type ปัจจุบันใน C#

ภาพรวม

เมธอด Type.GetNestedType(string name) คืน Type ของ nested type ที่มีชื่อตรงตามที่ระบุ (คืน null หากไม่พบ) สามารถระบุ BindingFlags ได้

ตัวอย่างที่ 1: ดึง nested type ชื่อ "AdvSubject"

using System;

public class Demo
{
    public static void Main()
    {
        Type type1 = typeof(Subject);
        try
        {
            Type type2 = type1.GetNestedType("AdvSubject");
            Console.Write("NestedType = " + type2);
        }
        catch (ArgumentNullException e)
        {
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

public class Subject
{
    public class BasicSubject { }
    public class AdvSubject { }
}

ผลลัพธ์

NestedType = Subject+AdvSubject

ตัวอย่างที่ 2: ส่งชื่อเป็น null (โยน ArgumentNullException)

using System;

public class Demo
{
    public static void Main()
    {
        Type type1 = typeof(Subject);
        try
        {
            Type type2 = type1.GetNestedType(null);
            Console.Write("NestedType = " + type2);
        }
        catch (ArgumentNullException e)
        {
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

public class Subject
{
    public class BasicSubject { }
    public class AdvSubject { }
}

ผลลัพธ์

System.ArgumentNullException

สรุป

  • GetNestedType คืน Type เดียว ไม่ใช่อาร์เรย์
  • ส่งชื่อเป็น null จะโยน ArgumentNullException
  • ใช้ BindingFlags เพื่อค้นหา non-public nested types