How does Dependency Injection work in ASP.NET Core?

πŸ’‘ Concept: Dependency Injection in ASP.NET Core

ASP.NET Core uses a built-in IoC container to manage object lifetimes and dependencies via dependency injection.

πŸ“˜ Quick Intro

The framework automatically injects required services into controllers and other classes at runtime.

🧠 Analogy

Like a manager providing employees exactly what tools they need instead of them buying it themselves.

πŸ”§ Technical Explanation

  • Services are registered in Startup.cs or Program.cs with lifetimes.
  • The framework resolves dependencies using constructor injection.
  • Supports Scoped, Transient, and Singleton lifetimes.
  • Enables decoupled, testable code.
  • Supports middleware, filters, and more through DI.

🎯 Use Cases

  • βœ… Injecting database contexts into controllers.
  • βœ… Providing logging services.
  • βœ… Injecting custom services and repositories.
  • βœ… Unit testing with mocked dependencies.

πŸ’» Code Example


// Register services in Startup.cs
services.AddScoped();

public class UserController {
    private readonly IUserService _userService;

    public UserController(IUserService userService) {
        _userService = userService;
    }

    public IActionResult GetUser() {
        var user = _userService.GetUser();
        return View(user);
    }
}

❓ Interview Q&A

Q1: What is dependency injection?
A: A pattern to inject dependencies instead of creating them inside classes.

Q2: How are services registered?
A: Via IServiceCollection in Startup.cs or Program.cs.

Q3: What lifetimes are supported?
A: Scoped, Transient, Singleton.

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

Q5: Can DI improve testability?
A: Yes, by enabling mocking.

Q6: Can middleware use DI?
A: Yes.

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

Q8: Can you inject services into filters?
A: Yes.

Q9: What is IoC?
A: Inversion of Control.

Q10: What is the default DI container?
A: Built-in Microsoft.Extensions.DependencyInjection container.

πŸ“ MCQs

Q1. What is dependency injection?

  • Creating dependencies inside classes
  • Injecting dependencies into classes
  • Using static classes
  • Direct instantiation

Q2. How are services registered?

  • IServiceProvider
  • IServiceCollection
  • ServiceLocator
  • Factory

Q3. What lifetimes are supported?

  • Scoped only
  • Transient only
  • Scoped, Transient, Singleton
  • Singleton only

Q4. What is constructor injection?

  • Using fields
  • Passing dependencies via constructor
  • Static methods
  • Property injection

Q5. Can DI improve testability?

  • No
  • Yes
  • Maybe
  • Rarely

Q6. Can middleware use DI?

  • No
  • Yes
  • Sometimes
  • Never

Q7. Is DI mandatory?

  • Yes
  • No
  • Optional
  • Always

Q8. Can you inject services into filters?

  • No
  • Yes
  • Sometimes
  • Never

Q9. What is IoC?

  • Input of Control
  • Inversion of Control
  • Injection of Control
  • Initialization of Control

Q10. Default DI container?

  • Autofac
  • Ninject
  • Castle Windsor
  • Microsoft.Extensions.DependencyInjection

πŸ’‘ Bonus Insight

ASP.NET Core’s built-in DI container simplifies service management and promotes modular architecture.

πŸ“„ PDF Download

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

πŸ” Navigation

πŸ’¬ Feedback
πŸš€ Start Learning
Share:

Tags: