C# (.NET) के लिए Dependency Injection कंटेनर: पूरी गाइड

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

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

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

C# (.NET) के लिए Dependency Injection कंटेनर: पूरी गाइड

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

Dependency Injection क्या है?

Dependency Injection (डिपेंडेंसी इंजेक्शन) एक पैटर्न है जिसमें कोई ऑब्जेक्ट अपनी डिपेंडेंसी खुद नहीं बनाता, बल्कि उन्हें बाहर से प्राप्त करता है। इससे:

  • कंपोनेंट्स के बीच कपलिंग कम होती है
  • टेस्टिंग आसान हो जाती है (डिपेंडेंसी को मॉक से बदलना संभव)
  • कोड अधिक लचीला और पुन: उपयोग योग्य बनता है
  • ऑब्जेक्ट्स के लाइफसाइकल का केंद्रीकृत प्रबंधन होता है

DI कंटेनर क्या है?

DI कंटेनर (या IoC कंटेनर) एक लाइब्रेरी है जो डिपेंडेंसी इंजेक्शन की प्रक्रिया को ऑटोमेट करती है। यह ऑब्जेक्ट्स बनाने और उनके लाइफटाइम को मैनेज करने की जिम्मेदारी लेता है। .NET में मुख्य DI कंटेनर Microsoft.Extensions.DependencyInjection है, जो ASP.NET Core में बिल्ट-इन है और किसी भी .NET एप्लिकेशन में उपयोग किया जा सकता है।

DI कंटेनर की मुख्य अवधारणाएँ

DI कंटेनर निम्नलिखित अवधारणाओं पर काम करता है:

  • सर्विस रजिस्ट्रेशन — कंटेनर में टाइप और उनके इम्प्लीमेंटेशन जोड़ने की प्रक्रिया
  • डिपेंडेंसी रिजॉल्व करना — डिपेंडेंसी सहित ऑब्जेक्ट्स का ऑटोमैटिक निर्माण
  • सर्विस लाइफटाइम — यह निर्धारित करता है कि ऑब्जेक्ट कितने समय तक मौजूद रहेगा (Transient, Scoped, Singleton)

.NET में DI कंटेनर सेटअप करना

DI कंटेनर के साथ शुरुआत करने के लिए Microsoft.Extensions.DependencyInjection पैकेज इंस्टॉल करना होगा। इसे NuGet के माध्यम से करें:

dotnet add package Microsoft.Extensions.DependencyInjection

इंस्टॉल करने के बाद, ServiceCollection का एक इंस्टेंस बनाएं और उसमें सभी डिपेंडेंसी रजिस्टर करें:

using Microsoft.Extensions.DependencyInjection;

// सर्विस कलेक्शन बनाएं
var services = new ServiceCollection();

// सर्विसेज रजिस्टर करें
services.AddTransient<ILogger, ConsoleLogger>();
services.AddScoped<IUserRepository, UserRepository>();
services.AddSingleton<IConfiguration, AppConfiguration>();

// सर्विस प्रोवाइडर बनाएं
var serviceProvider = services.BuildServiceProvider();

DI कंटेनर का उपयोग करने का उदाहरण

एक वास्तविक उदाहरण देखें: यूजर मैनेजमेंट एप्लिकेशन। इंटरफेस और उनके इम्प्लीमेंटेशन बनाएं:

public interface IUserRepository
{
    User GetUser(int id);
}

public interface IEmailService
{
    void SendEmail(string to, string subject);
}

public class UserRepository : IUserRepository
{
    public User GetUser(int id)
    {
        // डेटाबेस से यूजर प्राप्त करने का लॉजिक
        return new User { Id = id, Name = "John Doe" };
    }
}

public class EmailService : IEmailService
{
    public void SendEmail(string to, string subject)
    {
        Console.WriteLine($"Email sent to {to}: {subject}");
    }
}

अब UserService क्लास बनाएं जो इन डिपेंडेंसी का उपयोग करता है:

public class UserService
{
    private readonly IUserRepository _userRepository;
    private readonly IEmailService _emailService;

    public UserService(IUserRepository userRepository, IEmailService emailService)
    {
        _userRepository = userRepository;
        _emailService = emailService;
    }

    public void NotifyUser(int userId)
    {
        var user = _userRepository.GetUser(userId);
        _emailService.SendEmail(user.Email, "Welcome!");
    }
}

सब कुछ DI कंटेनर में रजिस्टर करें और उपयोग करें:

var services = new ServiceCollection();
services.AddTransient<I                    

अनुशंसाएँ