System.Reflection নেমস্পেসে ক্লাসগুলো থাকে যা আপনাকে অ্যাপ্লিকেশন সম্পর্কে ইনফরমেশন পাওয়া এবং ডাইনামিক্যালি টাইপ, ভ্যালু, অবজেক্ট যোগ করার সুযোগ দেয়।
রিফ্লেকশন অবজেক্টগুলো রানটাইমে টাইপ ইনফরমেশন পাওয়ার জন্য ব্যবহৃত হয়। রানিং প্রোগ্রামের মেটাডেটা এক্সেস করার ক্লাসগুলো System.Reflection নেমস্পেসে আছে।
- রিফ্লেকশন রানটাইমে অ্যাট্রিবিউট ইনফরমেশন ভিউ করতে দেয়।
- অ্যাসেম্ব্লির বিভিন্ন টাইপ একজামিন এবং ইনস্ট্যানসিয়েট করতে দেয়।
- মেথড এবং প্রপার্টিতে লেট বাইন্ডিং করতে দেয়।
- রানটাইমে নতুন টাইপ তৈরি করে টাস্ক পারফর্ম করতে দেয়।
উদাহরণ
কী মেথডগুলো ব্যবহৃত হয়েছে:
GetProperty(String): নির্দিষ্ট নামের পাবলিক প্রপার্টি সার্চ করে।GetType(String, Boolean): অ্যাসেম্ব্লি ইনস্ট্যান্সে নির্দিষ্ট নামেরTypeঅবজেক্ট পায়।SetValue(Object, Object): নির্দিষ্ট অবজেক্টের প্রপার্টি ভ্যালু সেট করে।
class Program
{
static void Main(string[] args)
{
User user = new User();
Type type = user.GetType();
PropertyInfo prop = type.GetProperty("Name");
prop.SetValue(user, "Bangalore", null);
System.Console.WriteLine(user.Name); // Bangalore
Console.ReadLine();
}
}
class User
{
public int Id { get; set; }
public string Name { get; set; }
}
আউটপুট
Bangalore
ব্যাখ্যা: রিফ্লেকশন দিয়ে রানটাইমে প্রপার্টি খুঁজে বের করে (GetProperty) এবং ভ্যালু সেট করে (SetValue)। এটি ডাইনামিক ম্যাপিং, সিরিয়ালাইজেশন, ORM ইত্যাদিতে খুব কাজে আসে। পারফরম্যান্স খেয়ালে ক্যাশিং করা উচিত।