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!