हेल्लो दोस्तों! आज के इस पोस्ट में आपको c# reflection in hindi के बारे में आपको बताया जा रहा है की क्या होता है कैसे काम करता है तो चलिए शुरू करते है
Contents
C# reflection का परिचय
- c# में reflection को API आपको runtime के दौरान प्रोग्राम को element को inspect और manipulate करने की ability को provide करती है
- reflection के द्वारा ही आप किसी assembly के बारे में सम्पूर्ण जानकारी ही प्राप्त कर सकते है c# में assembly वह फाइल(file) होती है जो आपके project या application को represent करती है यह file compiler के द्वारा successful compilation पर ही automatically generate की जाती है
- assembly file में ही आपके प्रोग्राम के सभी modules ,namespaces ,classes,methods आदि को element होते है जो reflection API आपको किसी assembly के metadata का access को provide करती है reflection के द्वारा नयी assembly को create और compile भी की जा सकती है
- assembly file में available दुसरे प्रोग्राम को element जैसे की class,interface,struct,delegate और method आदि के बारे में भी reflection के द्वारा जानकारी प्राप्त की जा सकती है
- reflection उन situations में important है जब आप किसी भी ऐसी application के बारे में जानकारी को प्राप्त करना चाहते है तो आपके create नहीं की है या जिसके elements के बारे में आपको कोई भी जानकारी नहीं है example के लिए आप किसी दूसरी programmer के द्वारा भी create की गयी किसी application को reflection के द्वारा inspect कर सकते है
System reflection
c# में reflection API System.Reflection namespace के द्वारा ही represent की गयी है इस namespace में ऐसी बहुत सी classes,methods,और properties को available है जिनके द्वारा आप किसी type के members को enumerate कर सकते है नए objects को instantiate कर सकते है किसी class किये गए custom attribute को inspect कर सकते है और कसी object के members को भी execute के सकते है
System.Reflection को namespace में available कुछ important classes के बारे में आपको निचे दिया जा रहा detail से बताया जा रहा है
Assembly
यह class programmer के द्वारा assembly को load और explore करने के लिए उपयोग की जाती है इस class का object को create करके आप assembly में available program elements को देख सकते है
किसी assembly को load करने के लिए इस class में load() method को provide किया गया है इस method में assembly file का नाम को pass किया जाता है इस class के loadfile() और loadfrom() method के द्वारा भी किसी assembly को load किया जा सकता है
assembly class का getTypes() method को किसी assembly में available सभी types (class,struct,enum और delegate ) आदि की list को return करता है किसी particular type को search करने के लिए ही getType() method का प्रयोग किया जा सकता है
module
एक module को portable file होती है ये file.dll या exe extension के द्वारा ही defined होती है एक module में कई namespace हो सकती है किसी भी assembly file में कई modules हो सकती है जिनमे अलग अलग namespace हो सकती है
module class के getTypes() ,getMethod(), और getFields() आदि में methods का प्रयोग करके आप module में available types ,method और fields के बारे में आपको जानकारी को extract कर सकते है
methodinfo
यह class को किसी type के method को represent करती है किसी object के methods की जानकारी प्राप्त करने के लिए आप methodinfo class का object को create करके available methods को प्रयोग कर सकते है
methods के parameters और return type की information के लिए आप GetParameters() method और returnParameter,return type आदि में properties को उपयोग कर सकते है
constructorinfo
यह class किसी constructor के attribute को discover करने या constructors को invoke करने के लिए प्रयोग की जाती है class में available constructors की list को प्राप्त करने के लिए getConstructors() या getConstructor() method का प्रयोग किया जाता है
memberinfo
यह class किसी member के attribute और method के बारे में आपको जानकारी access करने के लिए उपयोग की जाती है यह एक abstract class होती है और दूसरी classes के द्वारा class के सभी members (constructors,events,fields,method ,properties आदि ) के बारे में जानकारी को access करने के लिए प्रयोग की जाती है
इस class का object को create करके आप सभी members के बारे में information को extract कर सकते है
parameterinfo
किसी parameter का data type ,default values आदि को जानकारी को प्राप्त करने के लिए आप parameterinfo class का object का प्रयोग कर सकते है
इस class का GetParameters() method किसी method के सभी parameter की list array के रूप में return करता है
type
type class के System.Reflection को namespace में एक main functionality है यह class को meta data को access करने का primary way हा इस class को आप किसी type के members (constructors,methods,properties आदि ) के type declaration के बारे में जानकारी को प्राप्त करने के लिए प्रयोग कर सकते है
type एक abstract class है इसलिए इसमे available methods का प्रयोग करने के लिए आपको इसे inherit करने की आवश्यकता होती है यह class के निचे दिए जा रहे methods को प्रोविडे(provide) कर सकते है
- GetConstructors()
- GetProperties()
- GetMethods()
- GetEvents()
- GetInterfaces()
- GetMembers()
- GetEvents()
FieldInfo
यह class को field के attribute और meta data का access को प्रोविडे(provide) करती है इस class का कोई भी public constructor नहीं होता है इस class का object को प्राप्त करने के लिए type object पर getField() या getField() method को call किये जाता है
fields class में डिफाइन किये गए variables होते है fieldinfo class fields के बारे में metadata को प्रोविडे करने के साथ साथ fields के लिए dynamic set और get functionality को प्रोविडे करती है
eventinfo
यह class को event attribute और event metadata का access प्रोविडे करती है इस class को event को inspect करने और event handlers से जोड़ने के लिए प्रयोग किया जा सकता है
eventinfo class को विभिन्न properties और methods को provide करती है जिनकी मदद से आप events के बारे में सम्पूर्ण जानकारी को प्राप्त कर सकते है लेकिन एक बार आपको ध्यान रखनी चाहिए की इस class के द्वारा आप event नहीं raise कर सकते है
propertyinfo
यह class property attribute और properties का metadata access करने के लिए प्रयोग की जाती है यह एक abstract class है जब की आप इसे inherit करते है तो इसके लिए GetValue(),SetValue(),GetAccessors() आदि methods को override करना आवश्यक होता है
example of c# reflection
c# में reflection को निचे आपको example के द्वारा समझाया गया है
using System; using System.Reflection; class myClass { public string FirstName { get;set; } public string Last|Name { get;set; } static void Main(string[] args) { Type type=typeof(myClass); propertyInfo[] propinfo=type.GetProperties(); foreach(var item in propinfo) { Console.WriteLine(item); } } }
उपर दिए जा रहे example में आपका आउटपुट generate होता है
System.String FirstName System.String LastName
reference-https://www.tutorialspoint.com/csharp/csharp_reflection.htm
निवेदन:-आप सभी छात्र –छात्रों से निवेदन है की अगर आपको ये Topic(c# reflection in hindi) या post अच्छा लगा हो तो कृपया आप इस वेबसाइट के बारे में अपने दोस्तों को जरुर बताये और -अगर कोई topic(c# reflection in hindi) से संबधित प्रश्न हो तो कमेंट्स(comments) आपके लिए ही बना है और किसी Subject(c# reflection in hindi) के लेकर भी कोई प्रश्न हो तो कमेंट करे “आपका comments हमारे लिए बहुमूल्य है “ *_*धन्यवाद