Ardalis.SmartEnum C# (.NET): पूर्ण गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Ardalis.SmartEnum C# (.NET): पूर्ण गाइड उदाहरणों के साथ

1. यह क्या है और क्यों ज़रूरी है?

Ardalis.SmartEnum C# (.NET) के लिए एक लाइब्रेरी है जो डेवलपमेंट की एक आम समस्या को हल करती है: enum (एनम) के साथ काम करने की असुविधा। C# में बिल्ट-इन एनम असल में पूर्णांक कॉन्स्टेंट का एक सेट होते हैं। इनमें लॉजिक, अतिरिक्त फ़ील्ड (जैसे विवरण, मुद्रा कोड, रंग) या मेथड नहीं हो सकते। इससे switch या if-else का उपयोग करके कोड फूल जाता है, जो SOLID सिद्धांतों (विशेषकर Open/Closed Principle) का उल्लंघन करता है और कोड को कम मेंटेन करने योग्य बनाता है।

SmartEnum एक विकल्प प्रदान करता है: स्मार्ट एनम (Smart Enums)। ये क्लासेज़ हैं जो बेस क्लास SmartEnum<TEnum, TValue> से इनहेरिट करती हैं। ऐसे एनम का प्रत्येक मान एक स्टैटिक सिंगलटन फ़ील्ड होता है। इससे आप एनम में कोई भी प्रॉपर्टी (Name, Value अनिवार्य हैं, साथ ही कोई भी कस्टम प्रॉपर्टी), मेथड और यहां तक कि इंटरफ़ेस भी जोड़ सकते हैं। यह एनम को संख्याओं के एक साधारण सेट से एक पूर्ण ऑब्जेक्ट में बदल देता है जिसमें व्यवहार होता है।

यह क्यों ज़रूरी है? पहला, टाइप-सुरक्षा के लिए। आप गलती से किसी वेरिएबल को वह मान नहीं दे सकते जो एनम में परिभाषित नहीं है (सामान्य एनम के विपरीत, जहां आप (MyEnum)42 कर सकते हैं)। दूसरा, लॉजिक को एनकैप्सुलेट करने के लिए। एक्सटेंशन मेथड या यूटिलिटी क्लास लिखने के बजाय, आप लॉजिक को सीधे एनम के अंदर रखते हैं। तीसरा, पठनीयता के लिए। कोड स्व-दस्तावेज़ीकरण बन जाता है: एनम का प्रत्येक मान न केवल नाम बल्कि संदर्भ भी रखता है।

2. इंस्टॉलेशन

लाइब्रेरी NuGet के माध्यम से इंस्टॉल होती है। पैकेज मैनेजर कंसोल या .NET CLI टर्मिनल में निम्नलिखित कमांड में से एक चलाएँ:

# .NET CLI के माध्यम से
dotnet add package Ardalis.SmartEnum

# Package Manager Console के माध्यम से
Install-Package Ardalis.SmartEnum

इंस्टॉलेशन के बाद, फ़ाइल की शुरुआत में using Ardalis.SmartEnum; जोड़ें।

3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण

आइए सप्ताह के दिनों के लिए एक सरल एनम बनाएँ। ध्यान दें: हम SmartEnum<TEnum, TValue> से इनहेरिट कर रहे हैं, जहाँ TEnum हमारी क्लास है और TValue मान का प्रकार है (आमतौर पर int या string)।

using Ardalis.SmartEnum;

public sealed class Weekday : SmartEnum<Weekday, int>
{
    // स्टैटिक फ़ील्ड — ये एनम के मान हैं
    public static readonly Weekday Monday = new Weekday(nameof(Monday), 1);
    public static readonly Weekday Tuesday = new Weekday(nameof(Tuesday), 2);
    public static readonly Weekday Wednesday = new Weekday(nameof(Wednesday), 3);
    public static readonly Weekday Thursday = new Weekday(nameof(Thursday), 4);
    public static readonly Weekday Friday = new Weekday(nameof(Friday), 5);
    public static readonly Weekday Saturday = new Weekday(nameof(Saturday), 6);
    public static readonly Weekday Sunday = new Weekday(nameof(Sunday), 7);

    // प्राइवेट कंस्ट्रक्टर अनिवार्य है
    private Weekday(string name, int value) : base(name, value) { }
}

// उपयोग
public class Program
{
    public static void Main()
    {
        var today = Weekday.Monday;
        Console.WriteLine(today.Name);   // Monday
        Console.WriteLine(today.Value);  // 1

        // मान द्वारा खोज
        var dayFromValue = Weekday.FromValue(3);
        Console.WriteLine(dayFromValue.Name); // Wednesday

        // नाम द्वारा खोज
        var dayFromName = Weekday.FromName("Friday");
        Console.WriteLine(dayFromName.Value); // 5
    }
}

4. मुख्य मेथड/फ़ंक्शन/क्लास

आइए मुख्य भागों पर नज़र डालें

अनुशंसाएँ