গতিশীলভাবে একটি সম্পত্তি মান আনতে আমরা প্রতিফলন ব্যবহার করতে পারি।
প্রতিফলন বস্তু (টাইপের প্রকারের) প্রদান করে যা সমাবেশ, মডিউল এবং প্রকারগুলি বর্ণনা করে। আমরা প্রতিফলন ব্যবহার করে গতিশীলভাবে একটি টাইপের একটি উদাহরণ তৈরি করতে পারি, টাইপটিকে একটি বিদ্যমান অবজেক্টের সাথে আবদ্ধ করতে পারি, বা একটি বিদ্যমান অবজেক্ট থেকে টাইপটি পেতে এবং এর পদ্ধতিগুলি শুরু করতে বা এর ক্ষেত্র এবং বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারি। যদি আমরা আমাদের কোডে গুণাবলী ব্যবহার করি, প্রতিফলন আমাদেরকে সেগুলি অ্যাক্সেস করতে সক্ষম করে৷
System.Reflection নামস্থান এবং System.Type ক্লাস .NET প্রতিফলনে গুরুত্বপূর্ণ ভূমিকা পালন করে। এই দুটি একসাথে কাজ করে এবং আমাদের একটি প্রকারের অন্যান্য অনেক দিককে প্রতিফলিত করার অনুমতি দেয়৷
উদাহরণ
using System; using System.Text; namespace DemoApplication { public class Program { static void Main(string[] args) { var employeeType = typeof(Employee); var employee = Activator.CreateInstance(employeeType); SetPropertyValue(employeeType, "EmployeeId", employee, 1); SetPropertyValue(employeeType, "EmployeeName", employee, "Mark"); GetPropertyValue(employeeType, "EmployeeId", employee); GetPropertyValue(employeeType, "EmployeeName", employee); Console.ReadLine(); } static void SetPropertyValue(Type type, string propertyName, object instanceObject, object value) { type.GetProperty(propertyName).SetValue(instanceObject, value); } static void GetPropertyValue(Type type, string propertyName, object instanceObject) { Console.WriteLine($"Value of Property {propertyName}: {type.GetProperty(propertyName).GetValue(instanceObject, null)}"); } } public class Employee { public int EmployeeId { get; set; } public string EmployeeName { get; set; } } }
আউটপুট
উপরের কোডের আউটপুট হল
Value of Property EmployeeId: 1 Value of Property EmployeeName: Mark
উপরের উদাহরণে আমরা দেখতে পাচ্ছি যে কর্মচারী বৈশিষ্ট্যের মানগুলি ধরন এবং সম্পত্তির নাম পেয়ে প্রতিফলন ব্যবহার করে সেট করা হয়েছে। একইভাবে সম্পত্তির মান আনার জন্য আমরা GetProperty() ব্যবহার করেছি প্রতিফলন শ্রেণীর পদ্ধতি। এটি ব্যবহার করে আমরা রানটাইম চলাকালীন যেকোনো সম্পত্তির মূল্য আনতে পারি।