Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में वर्तमान टाइप का विशिष्ट फील्ड कैसे प्राप्त करें

रिफ्लेक्शन का उपयोग करके वर्तमान टाइप का विशिष्ट फील्ड प्राप्त करने के लिए Type.GetField() मेथड का उपयोग करें।

सिंटैक्स

public FieldInfo GetField(string name);
public FieldInfo GetField(string name, BindingFlags bindingAttr);

उदाहरण 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

BindingFlags के साथ नॉन-पब्लिक फील्ड्स

using System;
using System.Reflection;

public class Subject {
    public string PublicField = "Public";
    private string PrivateField = "Private";
    protected string ProtectedField = "Protected";
    internal string InternalField = "Internal";
}

public class Demo {
    public static void Main() {
        Type type = typeof(Subject);
        
        // पब्लिक (डिफ़ॉल्ट)
        var pub = type.GetField("PublicField");
        Console.WriteLine("Public: " + pub);
        
        // नॉन-पब्लिक
        var priv = type.GetField("PrivateField", BindingFlags.NonPublic | BindingFlags.Instance);
        Console.WriteLine("Private: " + priv);
        
        var prot = type.GetField("ProtectedField", BindingFlags.NonPublic | BindingFlags.Instance);
        Console.WriteLine("Protected: " + prot);
        
        // मौजूद नहीं
        var missing = type.GetField("Missing");
        Console.WriteLine("Missing: " + missing);  // null
    }
}

आउटपुट

Public: System.String PublicField
Private: System.String PrivateField
Protected: System.String ProtectedField
Missing: 

FieldInfo मुख्य गुण

  • Name - फील्ड नाम
  • FieldType - फील्ड का टाइप
  • IsPublic, IsPrivate, IsStatic, IsInitOnly (readonly), IsLiteral (const)
  • Attributes - फील्ड एट्रिब्यूट्स

फील्ड वैल्यू प्राप्त/सेट करना

Subject subject = new Subject();
FieldInfo field = typeof(Subject).GetField("SubName");

// वैल्यू प्राप्त करें
string value = (string)field.GetValue(subject);
Console.WriteLine(value);  // Science

// वैल्यू सेट करें
field.SetValue(subject, "Math");
Console.WriteLine(subject.SubName);  // Math

// स्टेटिक फील्ड के लिए null पास करें
field.SetValue(null, "StaticValue");

GetField vs GetFields

मेथडरिटर्नउपयोग
GetField(name)FieldInfo (सिंगल)नाम से विशिष्ट फील्ड
GetFields()FieldInfo[]सभी फील्ड्स (BindingFlags के साथ)
  1. - C# में वर्तमान एन्यूमरेशन प्रकार के सदस्यों के नाम प्राप्त करें

    Type.GetEnumNames() मेथड एन्यूमरेशन स्थिरांक के नामों का एक सरणी लौटाता है। यह केवल एनम प्रकारों पर काम करता है; अन्यथा ArgumentException फेंकता है। उदाहरण 1: गैर-एनम प्रकार (string) using System; public class Demo { enum Vehicle { Car, Bus, Bike } public static void Main() { tr

  1. - C# में वर्तमान इंस्टेंस का प्रकार प्राप्त करें

    C# में किसी ऑब्जेक्ट के वर्तमान इंस्टेंस का प्रकार प्राप्त करने के लिए, हम GetType() मेथड का उपयोग करते हैं। यह मेथड System.Object से विरासत में मिला है और ऑब्जेक्ट के रनटाइम प्रकार को दर्शाने वाला Type ऑब्जेक्ट लौटाता है। यह रिफ्लेक्शन और डिबगिंग के लिए उपयोगी है। उदाहरण 1: स्ट्रिंग का प्रकार प्र

  1. - C# में Enum.GetType(): एन्यूमरेशन का प्रकार प्राप्त करना

    GetType() मेथड किसी भी ऑब्जेक्ट का रनटाइम टाइप लौटाता है। एनम मानों पर उपयोग करके उनका एन्यूमरेशन टाइप और अंतर्निहित टाइप जान सकते हैं। उदाहरण using System; public class Demo { public static void Main() { Enum[] values = { ConsoleColor.Blue, DayOfWeek.Sunday }; Co