Type.GetFields() मेथड (System.Reflection) वर्तमान टाइप के फील्ड्स का ऐरे लौटाता है। बाइंडिंग फ्लैग्स (BindingFlags) का उपयोग करके पब्लिक, नॉन-पब्लिक, स्टैटिक, इंस्टेंस फील्ड्स को फ़िल्टर किया जा सकता है।
उदाहरण 1: System.String के नॉन-पब्लिक स्टैटिक फील्ड्स
using System;
using System.Reflection;
public class Demo {
public static void Main() {
Type type = typeof(string);
// नॉन-पब्लिक स्टैटिक फील्ड्स प्राप्त करें
FieldInfo[] fields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic);
Console.WriteLine("नॉन-पब्लिक स्टैटिक फील्ड्स:");
foreach (FieldInfo field in fields) {
Console.WriteLine(field.ToString());
}
}
}
आउटपुट
नॉन-पब्लिक स्टैटिक फील्ड्स:
Int32 TrimHead
Int32 TrimTail
Int32 TrimBoth
Int32 charPtrAlignConst
Int32 alignConst
उदाहरण 2: System.Char के नॉन-पब्लिक स्टैटिक फील्ड्स
using System;
using System.Reflection;
public class Demo {
public static void Main() {
Type type = typeof(char);
FieldInfo[] fields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic);
Console.WriteLine("\nChar के नॉन-पब्लिक स्टैटिक फील्ड्स:");
foreach (FieldInfo field in fields) {
Console.WriteLine(field.ToString());
}
}
}
आउटपुट
Char के नॉन-पब्लिक स्टैटिक फील्ड्स:
Byte[] categoryForLatin1
Int32 UNICODE_PLANE00_END
Int32 UNICODE_PLANE01_START
Int32 UNICODE_PLANE16_END
Int32 HIGH_SURROGATE_START
Int32 LOW_SURROGATE_END
BindingFlags विकल्प
| फ्लैग | विवरण |
|---|---|
Public | पब्लिक फील्ड्स शामिल करें |
NonPublic | नॉन-पब्लिक (प्राइवेट, प्रोटेक्टेड, इंटरनल) शामिल करें |
Static | स्टैटिक फील्ड्स शामिल करें |
Instance | इंस्टेंस फील्ड्स शामिल करें |
DeclaredOnly | केवल वर्तमान टाइप में घोषित (विरासत में नहीं) |
सामान्य संयोजन
// सभी पब्लिक फील्ड्स (स्टैटिक + इंस्टेंस)
type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
// सभी इंस्टेंस फील्ड्स (पब्लिक + नॉन-पब्लिक)
type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
// केवल वर्तमान क्लास में घोषित पब्लिक इंस्टेंस फील्ड्स
type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
FieldInfo मुख्य प्रॉपर्टीज़
Name- फील्ड नामFieldType- फील्ड का टाइपIsPublic,IsPrivate,IsStatic,IsInitOnly(readonly),IsLiteral(const)GetValue(obj)- इंस्टेंस से फील्ड वैल्यू पढ़ेंSetValue(obj, value)- इंस्टेंस पर फील्ड वैल्यू सेट करें
कस्टम क्लास उदाहरण
public class Person {
public string Name; // पब्लिक इंस्टेंस
private int age; // प्राइवेट इंस्टेंस
public const string Species = "Human"; // पब्लिक लिटरल (स्टैटिक)
private static int count; // प्राइवेट स्टैटिक
}
// उपयोग:
Type t = typeof(Person);
var publicFields = t.GetFields(BindingFlags.Public | BindingFlags.Instance);
// Name, Species
var allFields = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Static | BindingFlags.Instance);
// सभी 4 फील्ड्स
नोट
रिफ्लेक्शन धीमा होता है - प्रदर्शन-महत्वपूर्ण कोड में कैशिंग या डायनामिक मेथड्स/एक्सप्रेशन ट्रीज़ उपयोग करें।