当前位置: 首页 > news >正文

建设银行官方网站个人系统板块修改刷链接浏览量网站

建设银行官方网站个人系统板块修改,刷链接浏览量网站,下载资料免费网站,外贸哪个行业比较好做在 .NET 开发中,依赖注入(Dependency Injection,简称 DI)是一种设计模式,它可以增强代码的可测试性、可维护性和可扩展性。以下是对 .NET 依赖注入的详细介绍: 1. 什么是依赖注入 在软件开发里&#xff0…

在 .NET 开发中,依赖注入(Dependency Injection,简称 DI)是一种设计模式,它可以增强代码的可测试性、可维护性和可扩展性。以下是对 .NET 依赖注入的详细介绍:

1. 什么是依赖注入

在软件开发里,当一个类需要使用另一个类的功能时,就会产生依赖关系。传统做法是在类的内部创建依赖对象,这样会使代码耦合度变高,不利于测试和维护。而依赖注入则是将依赖对象的创建和管理工作交给外部容器,让类只专注于自身的业务逻辑。

例如,有一个 OrderService 类需要使用 EmailService 类来发送邮件,传统方式是在 OrderService 内部创建 EmailService 实例:

public class EmailService
{public void SendEmail(string message){// 发送邮件的逻辑Console.WriteLine($"Sending email: {message}");}
}public class OrderService
{private readonly EmailService _emailService;public OrderService(){_emailService = new EmailService();}public void ProcessOrder(){// 处理订单的逻辑_emailService.SendEmail("Order processed successfully.");}
}

使用依赖注入,OrderService 不再自己创建 EmailService 实例,而是通过构造函数接收:

public class OrderService
{private readonly IEmailService _emailService;public OrderService(IEmailService emailService){_emailService = emailService;}public void ProcessOrder(){// 处理订单的逻辑_emailService.SendEmail("Order processed successfully.");}
}

2. .NET 中的依赖注入容器

.NET 提供了内置的依赖注入容器,它能够管理对象的生命周期和依赖关系。在 Startup.cs(.NET 5 及之前版本)或者 Program.cs(.NET 6 及之后版本)中配置依赖注入。

2.1 注册服务

在 .NET 中,服务可以通过不同的生命周期进行注册,主要有以下三种:

  • 单例(Singleton):在整个应用程序生命周期中,只创建一个服务实例。
  • 作用域(Scoped):在每个请求的生命周期内,只创建一个服务实例。
  • 瞬态(Transient):每次请求服务时,都会创建一个新的服务实例。

以下是在 .NET 6 的 Program.cs 中注册服务的示例:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;var host = Host.CreateDefaultBuilder(args).ConfigureServices((hostContext, services) =>{// 注册单例服务services.AddSingleton<IEmailService, EmailService>();// 注册作用域服务services.AddScoped<IOrderService, OrderService>();// 注册瞬态服务services.AddTransient<ITransientService, TransientService>();}).Build();// 使用服务
var orderService = host.Services.GetRequiredService<IOrderService>();
orderService.ProcessOrder();host.Run();
2.2 解析服务

通过 IServiceProvider 接口可以从依赖注入容器中解析服务。在上面的示例中,使用 host.Services.GetRequiredService<IOrderService>() 方法获取 IOrderService 的实例。

3. 使用依赖注入

一旦服务被注册到 IServiceCollection,你可以通过构造函数注入、属性注入或方法注入来使用这些服务。

构造函数注入
public class HomeController : Controller
{private readonly IUserService _userService;public HomeController(IUserService userService){_userService = userService;}public IActionResult Index(){var users = _userService.GetAllUsers();return View(users);}
}
属性注入
public class HomeController : Controller
{public IUserService UserService { get; set; }public IActionResult Index(){var users = UserService.GetAllUsers();return View(users);}
}
方法注入 (不常用)
public class HomeController : Controller
{public IActionResult Index([FromServices] IUserService userService){var users = userService.GetAllUsers();return View(users);}
}
在某些情况下,你可能需要在非控制器或非组件类中访问服务。你可以通过 IServiceProvider 来实现这一点:
// 在 Startup 或 Program.cs 中构建的应用程序实例中获取服务提供者
var serviceProvider = app.Services; var userService = serviceProvider.GetRequiredService<IUserService>();

4. 依赖注入的优点

  • 可测试性:因为依赖对象是通过构造函数注入的,所以在单元测试时可以轻松地使用模拟对象来替代真实的依赖对象。
  • 可维护性:当依赖对象发生变化时,只需要在依赖注入容器中修改注册配置,而不需要修改使用依赖的类。
  • 可扩展性:可以方便地替换或添加新的依赖对象,而不会影响现有的代码。

5. 依赖注入的使用场景

  • Web 应用开发:在 ASP.NET Core 应用中,控制器、中间件等组件可以通过依赖注入获取所需的服务。
  • 测试驱动开发(TDD):依赖注入使得编写单元测试更加容易,因为可以使用模拟对象来隔离被测试的类。
  • 大型项目开发:在大型项目中,使用依赖注入可以有效地管理组件之间的依赖关系,降低代码的耦合度。

总结

依赖注入是 .NET 开发中非常重要的设计模式,它通过将依赖对象的创建和管理工作交给外部容器,提高了代码的可测试性、可维护性和可扩展性。.NET 提供了内置的依赖注入容器,开发者可以根据需要注册不同生命周期的服务,并从容器中解析服务实例。

http://www.dtcms.com/a/522764.html

相关文章:

  • 学生网站建设首页wordpress技术博客
  • 什么网站开发外贸客户上海十大保安公司排名
  • 太原做彩票网站公司制作短视频的app哪个好
  • 有什网站可以做设计赚钱在手机上自建网站怎么弄
  • 域名及密码登录域名管理网站免费入口
  • 网站做美食视频挣钱吗全国建筑人员证书查询
  • 沈阳网站建设聚艺科技发来贵州省建设厅网站
  • 网站加速器下载wordpress个人博客毕业设计
  • 免费软件安装网站网站开发掌握哪种语言
  • 网站目录遍历杭州盘石做网站专业吗
  • 西安网站建设瑞信精准扶贫建设网站的目的
  • 做网站应该用什么语言来开发做海外贸易的网站名叫什么
  • 深圳电商网站开发公司焦作市网站建设
  • 建设工程信息服务平台新网站网页设计模板图片简单
  • 网站基本架构设计的主要步骤平台网站怎么优化
  • 如何建设一个新的网站项目网站建设应入哪个科目
  • 大型网站 div黄页是干什么用的
  • 网站建设主管有关网站设计与制作的论文
  • 电商导购网站开发北京网站开发联系电话
  • 智能建站技术高端网站建设机构
  • 网站建设超速云免费关键词自动优化工具
  • apache网站拒绝访问计量检测网站平台建设方案
  • 建设银行信用卡网站登录榆林 网站建设
  • 代做效果图网站CQ网站建设
  • 纯html5 网站婚庆网站建设必要性
  • 网站 尺寸海原县建设局网站
  • 背景图网站网站优化合同模板
  • 南昌建设网站公司浙江省城乡建设厅
  • 胶州做网站公司html主页设计
  • 快站官方客户端下载餐饮网站系统