কম্পিউটার টিউটোরিয়াল

C#-এ রিফ্লেকশন দিয়ে টাইপের সব মেম্বার পাওয়া

Type.GetMembers() মেথড একটি টাইপের সব পাবলিক মেম্বার (মেথড, প্রপার্টি, ফিল্ড, কনস্ট্রাক্টর, ইভেন্ট, নেস্টেড টাইপ) রিটার্ন করে। BindingFlags দিয়ে ফিল্টার করা যায়।

উদাহরণ ১: সব মেম্বার পাওয়া (ডিফল্ট বাইন্ডিং)

using System;
using System.Reflection;

public class Demo {
    public static void Main() {
        Type type = typeof(Subject);
        try {
            FieldInfo fieldInfo = type.GetField("SubName");
            MemberInfo[] info = type.GetMembers();
            Console.Write("Members = ");
            for (int i = 0; i < info.Length; i++)
                Console.WriteLine(" {0}", info[i]);
            Console.WriteLine("FieldInfo = {0}", fieldInfo);
        }
        catch (ArgumentNullException e) {
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

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

আউটপুট

Members = 
System.String ToString()
Boolean Equals(System.Object)
Int32 GetHashCode()
System.Type GetType()
Void .ctor()
System.String SubName
FieldInfo = System.String SubName

উদাহরণ ২: BindingFlags দিয়ে পাবলিক ইনস্ট্যান্স মেম্বার ফিল্টার

using System;
using System.Reflection;

public class Demo {
    public static void Main() {
        Type type = typeof(Subject);
        try {
            FieldInfo fieldInfo = type.GetField("SubName");
            MemberInfo[] info = type.GetMembers(BindingFlags.Public | BindingFlags.Instance);
            Console.Write("Members = ");
            for (int i = 0; i < info.Length; i++)
                Console.WriteLine(" {0}", info[i]);
            Console.WriteLine("FieldInfo = {0}", fieldInfo);
        }
        catch (ArgumentNullException e) {
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

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

আউটপুট

Members = 
System.String ToString()
Boolean Equals(System.Object)
Int32 GetHashCode()
System.Type GetType()
Void .ctor()
System.String SubName
FieldInfo = System.String SubName

ব্যাখ্যা

  • GetMembers() — ইনহেরিট করা মেম্বারসহ সব পাবলিক মেম্বার রিটার্ন করে (Object থেকে আসা ToString, Equals, GetHashCode, GetType সহ)।
  • BindingFlags.Public | BindingFlags.Instance — শুধু পাবলিক ইনস্ট্যান্স মেম্বার (স্ট্যাটিক নয়)।
  • GetFields(), GetProperties(), GetMethods(), GetConstructors() দিয়ে নির্দিষ্ট ধরনের মেম্বার পাওয়া যায়।
  1. বর্তমান এনামারেশন টাইপের আন্ডারলাইং টাইপ পান C#-এ

  2. বর্তমান এনামারেশন টাইপের সদস্যদের নাম পান C#-এ

  3. C#-এ বর্তমান ইন্সট্যান্সের টাইপ পান

  4. C#-এ Enum.GetType() মেথড: এনামের টাইপ পাওয়া