रिफ्लेक्शन कोड में टाइप्स, मेथड्स और फील्ड्स के मेटाडेटा का वर्णन करने की प्रक्रिया है। System.Reflection नेमस्पेस आपको लोडेड असेंबलीज़, उनमें मौजूद एलिमेंट्स जैसे क्लासेस, मेथड्स और वैल्यू टाइप्स के बारे में डेटा प्राप्त करने में सक्षम बनाता है।
System.Reflection की कई क्लासेस हैं लेकिन सबसे अधिक उपयोग की जाने वाली हैं: Assembly, AssemblyName, ConstructorInfo, MethodInfo, ParameterInfo, EventInfo, PropertyInfo, और MemberInfo।
उदाहरण: TextInfo क्लास के मेथड्स और प्रॉपर्टीज प्राप्त करना
static void Main(string[] args)
{
TypeInfo myType = typeof(TextInfo).GetTypeInfo();
IEnumerable<PropertyInfo> properties = myType.DeclaredProperties;
IEnumerable<MethodInfo> methods = myType.DeclaredMethods;
Console.WriteLine(myType);
Console.WriteLine(properties);
Console.WriteLine(methods);
StringBuilder strBuilder = new StringBuilder();
Console.WriteLine();
strBuilder.Append("The properties are:");
foreach (PropertyInfo p in properties)
{
strBuilder.Append("\n" + p.Name);
}
strBuilder.Append("\n\nThe methods are:");
foreach (MethodInfo m in methods)
{
strBuilder.Append("\n" + m.Name);
}
Console.WriteLine(strBuilder);
}
आउटपुट
System.Globalization.TextInfo
System.Reflection.PropertyInfo[]
System.Reflection.MethodInfo[]
The properties are:
Invariant
ANSICodePage
OEMCodePage
MacCodePage
EBCDICCodePage
LCID
CultureName
IsReadOnly
ListSeparator
IsAsciiCasingSameAsInvariant
IsRightToLeft
The methods are:
get_Invariant
get_ANSICodePage
get_OEMCodePage
get_MacCodePage
get_EBCDICCodePage
get_LCID
get_CultureName
get_IsReadOnly
get_ListSeparator
set_ListSeparator
get_IsAsciiCasingSameAsInvariant
get_IsRightToLeft
... (अन्य मेथड्स)
मुख्य बिंदु
typeof(T).GetTypeInfo()- टाइप की जानकारी प्राप्त करता हैDeclaredProperties- केवल उसी टाइप में घोषित प्रॉपर्टीज लौटाता है (विरासत में मिली नहीं)DeclaredMethods- केवल उसी टाइप में घोषित मेथड्स लौटाता है- रनटाइम पर मेटाडेटा की जांच के लिए उपयोगी