C# में रिफ़्लेक्शन समझना
रनटाइम पर ऑब्जेक्ट का निरीक्षण और उनमें बदलाव करने के लिए रिफ़्लेक्शन का उपयोग करें
C# में रिफ़्लेक्शन समझना, CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 5 में से 5वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 5 पाठ शामिल हैं।
रिफ्लेक्शन का परिचय
C# में रिफ्लेक्शन को समझना
अगले पाठ में आपका स्वागत है! इस पाठ में, आप C# में रिफ्लेक्शन के बारे में सीखेंगे, जो एक शक्तिशाली सुविधा है और आपको रनटाइम पर प्रकारों तथा ऑब्जेक्ट्स का निरीक्षण करने और उनके साथ काम करने देती है। आइए शुरू करें!

रिफ्लेक्शन क्या है?
रिफ्लेक्शन रनटाइम पर किसी प्रोग्राम की अपनी संरचना का निरीक्षण और उसमें बदलाव करने की क्षमता है। इसका सामान्यतः इन कार्यों के लिए उपयोग किया जाता है:
- प्रकारों, विधियों और प्रॉपर्टी से संबंधित मेटाडेटा तक पहुँचना।
- विधियों का गतिशील रूप से आह्वान करना और फ़ील्ड तक पहुँचना।
- सीरियलाइज़र और ऑब्जेक्ट-रिलेशनल मैपर जैसे फ़्रेमवर्क तथा उपकरण बनाना।
मुख्य बात: रिफ्लेक्शन System.Reflection नेमस्पेस का भाग है।
प्रकार की जानकारी तक पहुँचना
किसी प्रकार से संबंधित मेटाडेटा तक पहुँचने के लिए Type वर्ग का उपयोग करें। उदाहरण:
सुझाव: प्रकार के सदस्यों का निरीक्षण करने के लिए GetProperties, GetMethods और GetFields का उपयोग करें।
using System;
class SampleClass {
public int Id { get; set; }
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Type Name: " + type.Name);
Console.WriteLine("Properties:");
foreach (var prop in type.GetProperties()) {
Console.WriteLine("- " + prop.Name);
}
}
}
ऑब्जेक्ट गतिशील रूप से बनाना
आप रिफ्लेक्शन का उपयोग करके किसी वर्ग के उदाहरण गतिशील रूप से बना सकते हैं। उदाहरण:
मुख्य बात: रनटाइम पर ऑब्जेक्ट बनाने के लिए Activator.CreateInstance का उपयोग करें।
using System;
class SampleClass {
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var property = type.GetProperty("Name");
property.SetValue(instance, "Reflection Example");
Console.WriteLine("Name: " + property.GetValue(instance));
}
}
विधियों का गतिशील रूप से आह्वान करना
रिफ्लेक्शन आपको कंपाइल-टाइम पर विधियों को जाने बिना रनटाइम पर उनका आह्वान करने की सुविधा देता है। उदाहरण:
सुझाव: गतिशील विधि कॉल के लिए GetMethod और Invoke का उपयोग करें।
using System;
class SampleClass {
public void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var method = type.GetMethod("Greet");
method.Invoke(instance, new object[] { "World" });
}
}
एट्रिब्यूट के साथ कार्य करना
रिफ्लेक्शन का उपयोग प्रकारों, विधियों या प्रॉपर्टी पर लागू किए गए कस्टम attributes का निरीक्षण करने के लिए किया जा सकता है। उदाहरण:
मुख्य बात: एट्रिब्यूट से संबंधित जानकारी प्राप्त करने के लिए GetCustomAttributes का उपयोग करें।
using System;
[AttributeUsage(AttributeTargets.Class)]
class SampleAttribute : Attribute {
public string Description { get; }
public SampleAttribute(string description) {
Description = description;
}
}
[Sample("This is a sample class.")]
class SampleClass {}
class Program {
static void Main() {
Type type = typeof(SampleClass);
var attributes = type.GetCustomAttributes(typeof(SampleAttribute), false);
foreach (SampleAttribute attr in attributes) {
Console.WriteLine("Description: " + attr.Description);
}
}
}
अभ्यास चुनौती
ऐसा प्रोग्राम बनाएँ, जो रिफ्लेक्शन का उपयोग करके किसी वर्ग का निरीक्षण करे, उसकी विधियों और प्रॉपर्टी की सूची बनाए और उसकी किसी एक विधि का गतिशील रूप से आह्वान करे। उदाहरण:
using System;
class SampleClass {
public int Add(int a, int b) {
return a + b;
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Methods:");
foreach (var method in type.GetMethods()) {
Console.WriteLine("- " + method.Name);
}
object instance = Activator.CreateInstance(type);
var addMethod = type.GetMethod("Add");
int result = (int)addMethod.Invoke(instance, new object[] { 5, 3 });
Console.WriteLine("Result of Add: " + result);
}
}
रिफ्लेक्शन के उपयोग की सर्वोत्तम विधियाँ
यहाँ कुछ सर्वोत्तम विधियाँ दी गई हैं:
- रिफ्लेक्शन का सीमित उपयोग करें, क्योंकि यह प्रदर्शन को प्रभावित कर सकता है।
- बार-बार होने वाले कॉल की दक्षता बढ़ाने के लिए रिफ्लेक्शन के परिणामों को कैश करें।
- जहाँ संभव हो, रिफ्लेक्शन की जगह कंपाइल-टाइम समाधानों को प्राथमिकता दें।
- प्लगइन और फ़्रेमवर्क जैसे गतिशील परिदृश्यों के लिए रिफ्लेक्शन का उपयोग करें।
सुझाव: लचीले और गतिशील अनुप्रयोगों के लिए रिफ्लेक्शन को कस्टम attributes के साथ संयोजित करें।
शानदार काम!
बधाई हो! आपने C# में रनटाइम पर प्रकारों का निरीक्षण और उनमें बदलाव करने के लिए रिफ्लेक्शन का उपयोग करना सीख लिया है। इससे "उन्नत C# सुविधाएँ" श्रेणी पूरी होती है। अब हम कोडिंग की अपनी अगली रोमांचक यात्रा पर आगे बढ़ते हैं!

एआई शिक्षक के साथ C# सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 93
- पाठ
- 346
अक्सर पूछे जाने वाले प्रश्न
क्या “C# में रिफ़्लेक्शन समझना” पाठ निःशुल्क है?
हाँ—“C# में रिफ़्लेक्शन समझना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 5 पाठ शामिल हैं।
“C# में रिफ़्लेक्शन समझना” में मैं क्या सीखूँगा?
रनटाइम पर ऑब्जेक्ट का निरीक्षण और उनमें बदलाव करने के लिए रिफ़्लेक्शन का उपयोग करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 5 में से 5वाँ पाठ है।
“C# में रिफ़्लेक्शन समझना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- C# में जेनरिक
- Async और Await: असमकालिक कोड के साथ काम करना
- थ्रेडिंग और टास्क को समझना
- डेलीगेट और लैम्ब्डा का परिचय
- C# में रिफ़्लेक्शन समझना