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!