在现代 C# 开发中,尤其是使用 .NET Core 或 .NET 5+ 进行应用程序构建时,依赖注入(Dependency Injection, 简称 DI) 已成为标准实践。而 Microsoft.Extensions.DependencyInjection 是微软官方提供的轻量级、高性能的依赖注入容器,广泛用于 ASP.NET Core、控制台应用、WPF、MAUI 等各类项目中。
本文将带你从零开始,手把手教你如何使用 Microsoft.Extensions.DependencyInjection 实现 C# 依赖注入,即使是编程新手也能轻松上手!
依赖注入是一种设计模式,用于实现控制反转(Inversion of Control, IoC)。它允许我们将对象的创建和依赖关系交给外部容器管理,而不是在类内部硬编码创建依赖对象。这样做的好处包括:
首先,你需要在你的 C# 项目中安装 Microsoft.Extensions.DependencyInjection 包。如果你使用的是 .NET 6+ 的控制台应用或 ASP.NET Core 项目,该包通常已默认包含。
若未包含,可通过以下命令安装:
dotnet add package Microsoft.Extensions.DependencyInjection 我们先创建一个简单的服务接口和其实现类:
// 定义服务接口public interface IEmailService{ void SendEmail(string to, string message);}// 实现服务class SmtpEmailService : IEmailService{ public void SendEmail(string to, string message) { Console.WriteLine($"[SMTP] 发送邮件给 {to}: {message}"); }}// 另一个实现(用于演示切换实现)class MockEmailService : IEmailService{ public void SendEmail(string to, string message) { Console.WriteLine($"[MOCK] 模拟发送邮件给 {to}: {message}"); }} 接下来,在程序入口(如 Main 方法)中配置依赖注入容器:
using Microsoft.Extensions.DependencyInjection;var services = new ServiceCollection();// 注册服务:这里使用瞬态(Transient)生命周期services.AddTransient<IEmailService, SmtpEmailService>();// 构建服务提供者(即 DI 容器)var serviceProvider = services.BuildServiceProvider(); 注意:AddTransient 表示每次请求服务时都会创建一个新实例。你还可以使用:
AddScoped:在同一个作用域内共享一个实例(常用于 Web 请求)AddSingleton:整个应用生命周期只创建一次实例现在,你可以通过 serviceProvider 获取服务实例并使用:
// 解析服务var emailService = serviceProvider.GetService<IEmailService>();// 使用服务emailService?.SendEmail("user@example.com", "你好,这是一封测试邮件!"); 以下是完整的控制台程序示例:
using Microsoft.Extensions.DependencyInjection;// 接口与实现(略,见上文)class Program{ static void Main(string[] args) { var services = new ServiceCollection(); services.AddTransient<IEmailService, SmtpEmailService>(); var serviceProvider = services.BuildServiceProvider(); var emailService = serviceProvider.GetService<IEmailService>(); emailService?.SendEmail("test@example.com", "欢迎使用 C# 依赖注入!"); }} 作为 .NET 生态的标准 DI 容器,Microsoft.Extensions.DependencyInjection 具有以下优势:
通过本教程,你已经掌握了如何在 C# 项目中使用 Microsoft.Extensions.DependencyInjection 实现依赖注入。无论你是开发 Web 应用、桌面软件还是后台服务,合理使用 DI 都能显著提升代码质量。
记住关键词:C#依赖注入、.NET Core DI容器、Microsoft.Extensions.DependencyInjection 和 C# IoC教程,它们将帮助你在后续学习和工作中快速定位相关资源。
赶快动手试试吧!让依赖注入成为你 C# 编程的得力助手!
本文由主机测评网于2025-12-19发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025129947.html