15_依赖注入和控制反转
依赖注入和控制反转
-
在.NET中,依赖注入 (DI) 是一种技术,用于实现控制反转 (IoC),它允许将类的依赖关系通过构造函数、方法或属性来注入。这样可以提高代码的模块化和可测试性。
-
IServiceCollection
是一个服务集合,用于注册应用程序中的服务和组件。这些服务之后可以通过IServiceProvider
来解析和提供。
代码示例
下面是一个简单的代码示例来说明这个概念:
首先安装Microsoft.Extensions.DependencyInjection
依赖包.
using Microsoft.Extensions.DependencyInjection; using System; namespace DependencyInjectionExample { // 定义一个接口 public interface IGreetingService { void Greet(string name); } // 实现接口的服务 public class GreetingService : IGreetingService { public void Greet(string name) { Console.WriteLine($"Hello, {name}!"); } } class Program { static void Main(string[] args) { // 创建服务集合并注册服务 var services = new ServiceCollection(); services.AddTransient<IGreetingService, GreetingService>(); // 构建服务提供者 var serviceProvider = services.BuildServiceProvider(); // 从服务提供者中获取服务实例 var greetingService = serviceProvider.GetService<IGreetingService>(); greetingService.Greet("World"); } } }
- 在这个例子中,我们定义了一个
IGreetingService
接口和一个GreetingService
类,它实现了这个接口。 - 在
Main
方法中,我们创建了一个ServiceCollection
对象,并使用AddTransient
方法注册了GreetingService
作为IGreetingService
的实现。 - 然后,我们通过
BuildServiceProvider
方法创建了一个IServiceProvider
对象,并使用它来获取IGreetingService
的实例。 - 最后,我们调用
Greet
方法来输出问候信息。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!