C# में डिपेंडेंसी इंजेक्शन: शुरुआती लोगों के लिए सरल गाइड

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

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

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

C# में डिपेंडेंसी इंजेक्शन: शुरुआती लोगों के लिए सरल गाइड

\n\n

डिपेंडेंसी इंजेक्शन (DI) C# और .NET में आधुनिक विकास में प्रमुख डिज़ाइन पैटर्न में से एक है। यदि आप अभी प्रोग्रामिंग में अपनी यात्रा शुरू कर रहे हैं, तो यह शब्द जटिल लग सकता है, लेकिन वास्तव में यह बहुत सरल है। इस लेख में, हम जानेंगे कि डिपेंडेंसी इंजेक्शन क्या है, इसकी आवश्यकता क्यों है, और इसे व्यवहार में कैसे उपयोग करें।

\n\n

सरल शब्दों में डिपेंडेंसी इंजेक्शन क्या है?

\n\n

कल्पना करें कि आप एक कंप्यूटर असेंबल कर रहे हैं। आप एक तैयार सिस्टम यूनिट खरीद सकते हैं, जिसमें सब कुछ पहले से जुड़ा हो और बदला न जा सके। या आप इसे अलग-अलग घटकों से असेंबल कर सकते हैं: प्रोसेसर, ग्राफिक्स कार्ड, रैम। दूसरा तरीका कहीं अधिक लचीला है—आप आसानी से ग्राफिक्स कार्ड को अधिक शक्तिशाली से बदल सकते हैं या अधिक रैम जोड़ सकते हैं।

\n\n

डिपेंडेंसी इंजेक्शन उसी सिद्धांत पर काम करता है। क्लास के अंदर निर्भरताओं को कठोरता से "जोड़ने" (कोड में सीधे ऑब्जेक्ट बनाने) के बजाय, आप उन्हें बाहर से "इंजेक्ट" करते हैं। यह आपके कोड को लचीला, परीक्षण योग्य और आसानी से बनाए रखने योग्य बनाता है।

\n\n

DI के बिना एक खराब उदाहरण देखें:

\n\n
public class EmailService\n{\n    private SmtpClient _client;\n    \n    public EmailService()\n    {\n        // कठोर संबंध — क्लास स्वयं निर्भरता बनाता है\n        _client = new SmtpClient("smtp.example.com", 587);\n    }\n    \n    public void Send(string to, string message)\n    {\n        _client.Send(to, message);\n    }\n}
\n\n

अब DI का उपयोग करते हुए वही उदाहरण:

\n\n
public class EmailService\n{\n    private readonly ISmtpClient _client;\n    \n    // निर्भरता कंस्ट्रक्टर के माध्यम से इंजेक्ट की जाती है\n    public EmailService(ISmtpClient client)\n    {\n        _client = client;\n    }\n    \n    public void Send(string to, string message)\n    {\n        _client.Send(to, message);\n    }\n}
\n\n

अंतर स्पष्ट है: दूसरे मामले में, हम इंटरफ़ेस ISmtpClient के माध्यम से काम करते हैं, और विशिष्ट कार्यान्वयन बाहर से प्रदान किया जाता है।

\n\n

C# में निर्भरता इंजेक्ट करने के मुख्य तरीके

\n\n

C# में DI को लागू करने के तीन मुख्य तरीके हैं। आइए प्रत्येक पर नज़र डालें।

\n\n

1. कंस्ट्रक्टर के माध्यम से इंजेक्शन

\n\n

यह सबसे लोकप्रिय और अनुशंसित तरीका है। निर्भरताएँ कंस्ट्रक्टर के पैरामीटर के रूप में पारित की जाती हैं और प्राइवेट फ़ील्ड में संग्रहीत की जाती हैं।

\n\n
public class OrderService\n{\n    private readonly IEmailService _emailService;\n    private readonly ILogger _logger;\n    \n    public OrderService(IEmailService emailService, ILogger logger)\n    {\n        _emailService = emailService;\n        _logger = logger;\n    }\n    \n    public void ProcessOrder(Order order)\n    {\n        _logger.Log("ऑर्डर प्रोसेसिंग शुरू");\n        _emailService.Send(order.CustomerEmail, "आपका ऑर्डर स्वीकार कर लिया गया है");\n        _logger.Log("ऑर्डर प्रोसेसिंग पूर्ण");\n    }\n}
\n\n

2. प्रॉपर्टी के माध्यम से इंजेक्शन

\n\n

निर्भरता एक पब्लिक प्रॉपर्टी के माध्यम से सेट की जाती है। यह तरीका तब उपयोगी होता है जब निर्भरता वैकल्पिक हो।

\n\n
public class ReportGenerator\n{\n    public ILogger Logger { get; set; }\n    \n    public void GenerateReport()\n    {\n        Logger?.Log("रिपोर्ट जनरेशन...");\n        // जनरेशन का तर्क\n    }\n}
\n\n

3. मेथड के माध्यम से इंजेक्शन

\n\n

निर्भरता सीधे उस मेथड में पारित की जाती है जहाँ इसकी आवश्यकता है। आमतौर पर इसका उपयोग शायद ही कभी किया जाता है, लेकिन कुछ परिदृश्यों में उपयोगी हो सकता है।

\n\n
public class DataProcessor\n{\n    public void ProcessData(string data, IValidator validator)\n    {\n        if (validator.Validate(data))\n        {\n            // डेटा प्रोसेसिंग\n        }\n    }\n}
\n\n

व्यावहारिक उदाहरण: खराब कोड से अच्छे कोड तक

\n\n

आइए देखें कि DI वास्तविक कोड को कैसे बेहतर बना सकता है। मान लीजिए कि हमारे पास डेटाबेस के साथ काम करने के लिए एक क्लास है।

\n\n

खराब कोड (DI के बिना):

\n\n
public class UserRepository\n{\n    private SqlConnect                

ब्लॉग

पुस्तक अनुशंसाएँ