日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(下)

發布時間:2023/12/4 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

05 | 依賴注入:良好架構的起點

注冊完畢之后,想替換某些組件的某些部分時,可以使用 Replace 和 RemoveAll

services.AddSingleton<IOrderService>(new OrderService()); services.Replace(ServiceDescriptor.Singleton<IOrderService, OrderServiceEx>());// 替換掉注冊的第一個實現

啟動程序,輸出如下:

獲取到服務實例:DependencyInjectionDemo.Services.OrderServiceEx:25560520

從結果看出,注冊的 OrderService 被替換為 OrderServiceEx

下面介紹 RemoveAll

services.AddSingleton<IOrderService>(new OrderService()); services.AddSingleton<IOrderService, OrderServiceEx>(); services.RemoveAll<IOrderService>();// 移除所有 IOrderService 的注冊

這種情況下程序會報錯,因為所有 IOrderService 的注冊被移除

Unable to resolve service for type 'DependencyInjectionDemo.Services.IOrderService'

下面介紹如何注冊泛型模板

當需要注冊一組泛型實現的時候

實際上注冊的時候并不知道泛型類的具體類型入參

依賴注入框架為我們提供了泛型模板的注冊方式

通過一行代碼來注冊所有此泛型的具體實現

定義一個泛型接口

namespace DependencyInjectionDemo.Services {public interface IGenericService<T>{}public class GenericService<T> : IGenericService<T>{public T Data { get; private set; }public GenericService(T data){this.Data = data;}} }

泛型模板注冊方法

services.AddSingleton(typeof(IGenericService<>), typeof(GenericService<>));

它的生命周期與之前的注冊方式是一致的

不過它無法通過泛型 API 注冊

需要注冊兩個 service 的 type

第一個入參是服務的類型

第二個入參是服務實現的類型

接下來,看看如何在 controller 中使用

// 在構造函數中添加兩個入參,IOrderService 和 IGenericService // 通過斷點調試查看 genericService 的類型可得知,泛型的具體實現可以用容器里面的任意類型來替代 public WeatherForecastController(ILogger<WeatherForecastController> logger, IOrderService orderService, IGenericService<IOrderService> genericService) {_orderService = orderService;_logger = logger; }

在 controller 中有兩種依賴注入的實例的獲取方式:

  • 通過 controller 構造函數注入

  • 通過 [FromServices] 注入

當定義一個 controller 的時候

它的服務是大部分接口都需要使用的情況下

推薦的做法是用構造函數注入的方式

如果這個服務僅僅在某一個接口使用的情況下

推薦使用 [FromServices] 注入

GitHub源碼鏈接:

https://github.com/witskeeper/geektime/tree/master/samples/DependencyInjectionDemo

總結

以上是生活随笔為你收集整理的.NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。