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

C#-তে রিফ্লেকশন ব্যবহার করে বর্তমান টাইপের নির্দিষ্ট ফিল্ড পাওয়ার পদ্ধতি

Type.GetField(string name) মেথড ব্যবহার করে রিফ্লেকশনের মাধ্যমে একটি টাইপের পাবলিক ইন্সট্যান্স ফিল্ড (field) খুঁজে বের করা যায়। এটি FieldInfo অবজেক্ট রিটার্ন করে যার মাধ্যমে ফিল্ডের নাম, টাইপ, অ্যাট্রিবিউট ইত্যাদি জানা যায় এবং মান পাওয়া/সেট করা যায়। ফিল্ড না পাওয়া গেলে null রিটার্ন করে (এক্সেপশন না দিয়ে)।

উদাহরণ ১: বিদ্যমান ফিল্ড পাওয়া

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

উদাহরণ ২: null নাম দিয়ে ফিল্ড খোঁজা (ArgumentNullException)

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() ডিফল্টভাবে পাবলিক ইন্সট্যান্স ফিল্ড খুঁজে। প্রাইভেট, স্ট্যাটিক বা নন-পাবলিক ফিল্ডের জন্য GetField(name, BindingFlags) ওভারলোড ব্যবহার করতে হয় (BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static ইত্যাদি)।

  1. বর্তমান এনামারেশন টাইপের আন্ডারলাইং টাইপ পান C#-এ

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

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

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