विवरण
Type.GetField() मेथड वर्तमान Type के एक विशिष्ट फील्ड को दर्शाने वाला FieldInfo ऑब्जेक्ट प्राप्त करता है। यह रिफ्लेक्शन का हिस्सा है और रनटाइम पर फील्ड मेटाडेटा तक पहुंचने की अनुमति देता है।
सिंटैक्स
public System.Reflection.FieldInfo GetField(string name);
public abstract System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr);
name- प्राप्त करने वाले डेटा फील्ड का नाम।bindingAttr- खोज कैसे संचालित की जाती है यह निर्दिष्ट करने वाले एन्यूमरेशन मानों का बिटवाइज़ संयोजन (उदाहरण:BindingFlags.Public | BindingFlags.Instance)।
उदाहरण 1: पब्लिक फील्ड प्राप्त करना
using System;
using System.Reflection;
public class Demo {
public static void Main() {
Type type = typeof(Subject);
try {
FieldInfo fieldInfo = type.GetField("SubName");
Console.WriteLine("FieldInfo = {0}", fieldInfo);
}
catch (ArgumentNullException e) {
Console.Write("{0}", e.GetType(), e.Message);
}
}
}
public class Subject {
public string SubName = "Science";
}
आउटपुट
FieldInfo = System.String SubName
उदाहरण 2: नल नाम के साथ अपवाद
using System;
using System.Reflection;
public class Demo {
public static void Main() {
Type type = typeof(Subject);
try {
FieldInfo fieldInfo = type.GetField(null);
Console.WriteLine("FieldInfo = {0}", fieldInfo);
}
catch (ArgumentNullException e) {
Console.Write("{0}", e.GetType(), e.Message);
}
}
}
public class Subject {
public string SubName = "Science";
}
आउटपुट
System.ArgumentNullException
बाइंडिंग फ्लैग्स के साथ उन्नत उपयोग
// निजी, स्टेटिक, या इनहेरिटेड फील्ड्स प्राप्त करने के लिए
FieldInfo field = type.GetField("privateField",
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
मुख्य बिंदु
- नाम
nullहोने परArgumentNullExceptionफेंकता है। - फील्ड न मिलने पर
nullलौटाता है (दूसरे ओवरलोड के साथ भी)। - डिफ़ॉल्ट ओवरलोड केवल पब्लिक इंस्टेंस फील्ड्स खोजता है।
- प्राइवेट/प्रोटेक्टेड/स्टेटिक फील्ड्स के लिए
BindingFlagsका उपयोग करें।