রিফ্লেকশন হলো C# প্রোগ্রামিংয়ে এমন একটি প্রক্রিয়া, যার মাধ্যমে রানটাইমে কোনো অবজেক্ট বা টাইপের বৈশিষ্ট্যগুলি (মেটাডেটা) সম্পর্কে তথ্য সংগ্রহ করা যায় এবং প্রয়োজনে সেই তথ্যের ভিত্তিতে অ্যাকশনের মাধ্যমে অবজেক্টের মেথড, প্রোপার্টি ইত্যাদি অ্যাক্সেস করা যায়। রিফ্লেকশন মূলত System.Reflection নেমস্পেসের অধীনে কাজ করে এবং এটি অ্যাসেম্বলি, টাইপ, মেথড, প্রোপার্টি, ইত্যাদির তথ্য সংগ্রহের পাশাপাশি সেগুলোতে অ্যাকশনের জন্য ব্যবহৃত হয়।
ধরা যাক, আমাদের একটি Person
ক্লাস রয়েছে, যেখানে Name
এবং Age
প্রোপার্টি এবং DisplayInfo
নামের একটি মেথড আছে।
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name + ", Age: " + Age);
}
}
using System;
using System.Reflection;
public class Program
{
public static void Main()
{
// Person টাইপ থেকে রিফ্লেকশন এর মাধ্যমে মেটাডেটা সংগ্রহ
Type type = typeof(Person);
Console.WriteLine("Class Name: " + type.Name);
// প্রোপার্টির তথ্য বের করা
Console.WriteLine("\nProperties:");
foreach (PropertyInfo property in type.GetProperties())
{
Console.WriteLine(property.Name + " : " + property.PropertyType);
}
// মেথডের তথ্য বের করা
Console.WriteLine("\nMethods:");
foreach (MethodInfo method in type.GetMethods())
{
Console.WriteLine(method.Name + " : " + method.ReturnType);
}
}
}
Person
ক্লাসের টাইপ (Type) সংগ্রহ করা হয়েছে।Person
ক্লাসের প্রোপার্টির নাম এবং টাইপ সংগ্রহ করা হয়েছে।Person
ক্লাসের মেথডের নাম এবং রিটার্ন টাইপ সংগ্রহ করা হয়েছে।ধরা যাক, Person
ক্লাসের DisplayInfo
মেথডটি রিফ্লেকশন ব্যবহার করে ইনভোক করতে চাই।
using System;
using System.Reflection;
public class Program
{
public static void Main()
{
Type type = typeof(Person);
// Person অবজেক্ট তৈরি
object personInstance = Activator.CreateInstance(type);
// প্রোপার্টি সেট করা
PropertyInfo nameProperty = type.GetProperty("Name");
nameProperty.SetValue(personInstance, "John Doe");
PropertyInfo ageProperty = type.GetProperty("Age");
ageProperty.SetValue(personInstance, 30);
// DisplayInfo মেথড ইনভোক করা
MethodInfo displayMethod = type.GetMethod("DisplayInfo");
displayMethod.Invoke(personInstance, null);
}
}
Person
ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে।DisplayInfo
মেথডটি ইনভোক করা হয়েছে, যা অবজেক্টের Name
এবং Age
প্রিন্ট করবে।আউটপুট:
Name: John Doe, Age: 30
Type
, MethodInfo
, PropertyInfo
, এবং FieldInfo
ব্যবহার করে ক্লাস, মেথড, প্রোপার্টি ইত্যাদির তথ্য সংগ্রহ করা হয়।রিফ্লেকশন ব্যবহারে C# প্রোগ্রামে অনেক ডায়নামিক অ্যাপ্লিকেশন তৈরি করা যায়, তবে এর কিছু সীমাবদ্ধতাও রয়েছে যা উন্নয়নকারীদের মাথায় রাখা উচিত।
আরও দেখুন...