प्रतिबिंब तब होता है जब प्रबंधित कोड असेंबली खोजने के लिए अपना मेटाडेटा पढ़ सकता है। अनिवार्य रूप से, यह कोड को उसी सिस्टम के भीतर अन्य कोड का निरीक्षण करने की अनुमति देता है। सी # में प्रतिबिंब के साथ, हम गतिशील रूप से एक प्रकार का उदाहरण बना सकते हैं और उस प्रकार को मौजूदा ऑब्जेक्ट से बांध सकते हैं। इसके अलावा, हम किसी मौजूदा वस्तु से प्रकार प्राप्त कर सकते हैं और इसके गुणों तक पहुंच सकते हैं। जब हम अपने कोड में विशेषताओं का उपयोग करते हैं, तो प्रतिबिंब हमें एक्सेस देता है क्योंकि यह मॉड्यूल, असेंबली और प्रकारों का वर्णन करने वाले प्रकार की वस्तुएं प्रदान करता है।
मान लें कि हमारे पास डबल प्रकार की संपत्ति है और रनटाइम में हमारे पास वास्तव में स्ट्रिंग के रूप में मान है और इसे प्रकार बदलने के बाद संपत्ति को असाइन करें। हम उपयोग कर सकते हैं Convert.ChangeType() - यह हमें प्रतिनिधित्व स्वरूपों को बदलने के लिए किसी भी IConvertible प्रकार पर रनटाइम जानकारी का उपयोग करने की अनुमति देता है।
उदाहरण
using System; using System.Reflection; namespace DemoApplication{ class Program{ static void Main(){ Circle circle = new Circle(); string value = "6.5"; PropertyInfo propertyInfo = circle.GetType().GetProperty("Radius"); propertyInfo.SetValue(circle, Convert.ChangeType(value, propertyInfo.PropertyType), null); var radius = circle.GetType().GetProperty("Radius").GetValue(circle, null); Console.WriteLine($"Radius: {radius}"); Console.ReadLine(); } } class Circle{ public double Radius { get; set; } } }
आउटपुट
Radius: 6.5
उपरोक्त उदाहरण में हम देख सकते हैं कि स्ट्रिंग मान "6.5" को Convert.ChangeType का उपयोग करके वास्तविक टाइपडबल में बदल दिया गया है और प्रतिबिंब इनरनटाइम का उपयोग करके त्रिज्या संपत्ति को सौंपा गया है।