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

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

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

सिंटैक्स

public Type GetInterface(string name);
public Type GetInterface(string name, bool ignoreCase);

उदाहरण 1: डिफ़ॉल्ट (केस-सेंसिटिव)

using System;

public class Demo {
    public static void Main() {
        Type type = typeof(double);
        Type myInterface = type.GetInterface("IFormattable");
        Console.WriteLine("Interface = " + myInterface);
    }
}

आउटपुट

Interface = System.IFormattable

उदाहरण 2: केस-इनसेंसिटिव खोज

using System;

public class Demo {
    public static void Main() {
        Type type = typeof(float);
        Type myInterface = type.GetInterface("IFormattable", true);  // ignoreCase = true
        Console.WriteLine("Interface = " + myInterface);
    }
}

आउटपुट

Interface = System.IFormattable

महत्वपूर्ण बिंदु

  • name नल नहीं हो सकता (ArgumentNullException)
  • नहीं मिलने पर null लौटाता है (एक्सेप्शन नहीं)
  • ignoreCase पैरामीटर केस-इनसेंसिटिव मिलान के लिए
  • इनहेरिटेड इंटरफेसेज भी शामिल हैं

व्यावहारिक उदाहरण: नल चेकिंग

Type type = typeof(MyClass);

Type iformattable = type.GetInterface("IFormattable");
if (iformattable != null) {
    Console.WriteLine("Implements IFormattable");
} else {
    Console.WriteLine("Does not implement IFormattable");
}

Type icloneable = type.GetInterface("ICloneable");
Console.WriteLine(icloneable ?? "Not found");  // Not found

कस्टम क्लास उदाहरण

public interface IRepository { }
public interface ICacheable { }
public interface ILoggable { }

public class UserRepository : IRepository, ICacheable, ILoggable { }

// उपयोग
Type repoType = typeof(UserRepository);

var cacheable = repoType.GetInterface("ICacheable");
var loggable = repoType.GetInterface("ILoggable");
var repo = repoType.GetInterface("IRepository`1");  // जेनेरिक इंटरफेस नाम

Console.WriteLine(cacheable);  // ICacheable
Console.WriteLine(loggable);   // ILoggable
Console.WriteLine(repo);       // IRepository`1[User]

जेनेरिक इंटरफेस नाम फॉर्मेट

  • खुला जेनेरिक: "IRepository`1" (बैकटिक + टाइप पैरामीटर काउंट)
  • बंद जेनेरिक: "IRepository`1[User]"
  • type.GetInterfaces() से नाम कॉपी करें

GetInterface vs GetInterfaces

मेथडरिटर्नकेस सेंसिटिवउपयोग
GetInterface(name)Type या nullहाँविशिष्ट इंटरफेस
GetInterface(name, true)Type या nullनहींकेस-इनसेंसिटिव
GetInterfaces()Type[]N/Aसभी इंटरफेसेज
  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