What is dependency injection in .NET Core?

๐Ÿ’ก Concept: Dependency Injection in .NET Core

Dependency Injection (DI) is a design pattern used to achieve Inversion of Control (IoC) between classes and their dependencies, improving code modularity and testability.

๐Ÿ“˜ Quick Intro

.NET Core has built-in support for DI, enabling services to be registered and injected where needed automatically.

๐Ÿง  Analogy

Like a restaurant kitchen where ingredients (dependencies) are provided to chefs (classes) as needed instead of chefs sourcing their own.

๐Ÿ”ง Technical Explanation

  • Services are registered with lifetimes: transient, scoped, and singleton.
  • Constructor injection is the most common form.
  • Improves loose coupling and makes unit testing easier.
  • .NET Core's built-in IServiceProvider manages dependencies.
  • Supports middleware and configuration injection.

๐ŸŽฏ Use Cases

  • โœ… Managing services in ASP.NET Core applications.
  • โœ… Enabling easier unit testing and mocking.
  • โœ… Decoupling application components for maintainability.
  • โœ… Injecting configuration and logging services.

๐Ÿ’ป Code Example


public interface IMessageService {
    void Send(string message);
}

public class EmailService : IMessageService {
    public void Send(string message) {
        Console.WriteLine(""Email sent: "" + message);
    }
}

// In Startup.cs or Program.cs
services.AddTransient();

public class Notification {
    private readonly IMessageService _service;
    public Notification(IMessageService service) {
        _service = service;
    }

    public void Notify(string msg) {
        _service.Send(msg);
    }
}

โ“ Interview Q&A

Q1: What is dependency injection?
A: A design pattern for supplying dependencies.

Q2: What lifetimes does .NET Core support?
A: Transient, scoped, singleton.

Q3: How does DI improve testing?
A: By enabling mocks and stubs.

Q4: What is constructor injection?
A: Passing dependencies via constructor.

Q5: Can you register multiple implementations?
A: Yes.

Q6: What is IServiceProvider?
A: Built-in DI container.

Q7: Can DI be used outside ASP.NET Core?
A: Yes, in console apps and others.

Q8: What is the role of ConfigureServices?
A: Register services.

Q9: Does DI reduce coupling?
A: Yes.

Q10: Is DI mandatory?
A: No, but recommended.

๐Ÿ“ MCQs

Q1. What is dependency injection?

  • Design pattern for dependencies
  • Database
  • API
  • Logging

Q2. Which lifetimes are supported in .NET Core DI?

  • Transient only
  • Scoped only
  • Transient, scoped, singleton
  • None

Q3. How does DI improve testing?

  • By hiding bugs
  • By enabling mocks and stubs
  • By generating tests
  • By complicating code

Q4. What is constructor injection?

  • Using properties
  • Using fields
  • Passing dependencies via constructor
  • Using global variables

Q5. Can multiple implementations be registered?

  • No
  • Yes
  • Maybe
  • Sometimes

Q6. What is IServiceProvider?

  • External library
  • Database service
  • Built-in DI container
  • API

Q7. Can DI be used outside ASP.NET Core?

  • No
  • Yes
  • Sometimes
  • Rarely

Q8. What does ConfigureServices do?

  • Configure database
  • Register services
  • Create controllers
  • Manage sessions

Q9. Does DI reduce coupling?

  • No
  • Yes
  • Sometimes
  • Never

Q10. Is DI mandatory?

  • Yes
  • No
  • Sometimes
  • Always

๐Ÿ’ก Bonus Insight

Dependency injection is key to building flexible, testable, and maintainable .NET Core applications.

๐Ÿ“„ PDF Download

Need a handy summary for your notes? Download this topic as a PDF!

๐Ÿ” Navigation

๐Ÿ’ฌ Feedback
๐Ÿš€ Start Learning
Share:

Tags: