激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - .net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

.net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

2023-12-30 00:02未知服務(wù)器之家 ASP.NET教程

一、使用DI注入 在之前的文章中已經(jīng)講過(guò)DI的概念(.net 溫故知新:【7】IOC控制反轉(zhuǎn),DI依賴注入),基于控制臺(tái)程序演示了DI依賴注入的使用,基于 Microsoft.Extensions.DependencyInjection 完成。那在WebAPI中如何使用依賴注入呢? 首先新建

一、使用DI注入

在之前的文章中已經(jīng)講過(guò)DI的概念(.net 溫故知新:【7】IOC控制反轉(zhuǎn),DI依賴注入),基于控制臺(tái)程序演示了DI依賴注入的使用,基于Microsoft.Extensions.DependencyInjection完成。那在WebAPI中如何使用依賴注入呢?

首先新建一個(gè)WebAPI項(xiàng)目WebAPI_DI,框架.net 7,其實(shí) webapi 項(xiàng)目也是控制臺(tái)應(yīng)用程序,只是在Asp.Net Core webapi框架中很多基礎(chǔ)工作已經(jīng)幫我們封裝配置好了。

項(xiàng)目新建完成后在Program.cs 中自動(dòng)生成如下代碼:

namespace WebAPI_DI
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);

            // Add services to the container.

            builder.Services.AddControllers();
            // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen();

            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (app.Environment.IsDevelopment())
            {
                app.UseSwagger();
                app.UseSwaggerUI();
            }

            app.UseHttpsRedirection();

            app.UseAuthorization();


            app.MapControllers();

            app.Run();
        }
    }
}

builder.Services 則是幫我已經(jīng)創(chuàng)建好的IServiceCollection 對(duì)象。

我們?cè)傩陆ㄒ粋€(gè)測(cè)試類 DITestClass:

    public class DITestClass
    {
        public int Add(int i, int n)
        {
            return i + n;
        }
    }

然后我們?cè)赽uilder.Services中進(jìn)行注冊(cè)

.net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

最后我們?cè)谀J(rèn)的WeatherForecastController控制器里面加一個(gè)post方法,并用構(gòu)造函數(shù)注入的方式將DITestClass注入進(jìn)去。

.net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

swagger中調(diào)用測(cè)試:

.net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

二、[FromService] 注入

FromServicesAttribute 允許將服務(wù)直接注入到操作方法,而無(wú)需使用構(gòu)造函數(shù)注入。
改屬性的作用主要針對(duì)我們?cè)谝蕾囎⑷氤跏蓟瘜?duì)象(該對(duì)象初始化很耗時(shí)),這個(gè)時(shí)候不管請(qǐng)求的api方法有沒有用到該對(duì)象都會(huì)等待很長(zhǎng)時(shí)間。
所以使用FromService讓接口在請(qǐng)求的時(shí)候再注入,從而不影響其他接口

.net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

三、多層架構(gòu)注入

在多層架構(gòu)中我們?nèi)绻昧似渌?xiàng)目,要使用其他項(xiàng)目中的類,那么要在主項(xiàng)目中進(jìn)行DI注入,這樣相當(dāng)于所有其他模塊或者其他人寫的項(xiàng)目都需要主項(xiàng)目來(lái)維護(hù)注入,比如:

新建一個(gè)ClassLibrary1項(xiàng)目,Class1類,方法Sub:

.net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

我們?cè)趙eb項(xiàng)目里面引用ClassLibrary1項(xiàng)目,如果要使用Class1類就需要在 Programe.cs里面注冊(cè)

builder.Services.AddScoped(typeof(Class1));

.net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

那么有沒有方法讓他們自己的項(xiàng)目自己管理注冊(cè)呢,我們可以簡(jiǎn)單改造一下

  • 新建一個(gè)類庫(kù),定義一個(gè)公共接口,安裝Microsoft.Extensions.DependencyInjection

.net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

  • 在ClassLibarary1里面定義實(shí)現(xiàn)接口類
    public class ModulInit : IModuleInit
    {
        public void Init(IServiceCollection service)
        {
            //所有需要DI的在此處注入
            service.AddScoped<Class1>();
        }
    }
  • 在Programe.cs里面調(diào)用引用項(xiàng)目的注冊(cè)類

.net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DI

這樣其他項(xiàng)目也按照這種方式,在主項(xiàng)目中只要調(diào)用一次注冊(cè)管理。不過(guò)這是最簡(jiǎn)單的方式,你也可以使用反射來(lái)查找引用的項(xiàng)目繼承了IModuleInit的類,然后進(jìn)行Init方法調(diào)用,這樣會(huì)更優(yōu)雅一些。
當(dāng)然你還可以使用其他依賴注入框架來(lái)取代Microsoft.Extensions.DependencyInjection,也學(xué)這個(gè)問(wèn)題就不再是問(wèn)題!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中午字幕无线码一区2020 | 久久亚洲美女视频 | 成年人国产视频 | 亚洲操比视频 | 麻豆传传媒久久久爱 | 99久久久精品国产一区二区 | 一级免费在线 | 叶子楣成人爽a毛片免费啪啪 | 一级大黄毛片 | 国产视频精品在线 | 美女黄色毛片免费看 | 国产精品视频免费在线观看 | 欧美成人一二三区 | 欧美成人一级片 | 黄色免费av| 老师你怎么会在这第2季出现 | 片在线观看 | 日本一区二区不卡在线观看 | 成人性视频欧美一区二区三区 | 在线成人免费观看 | 国产精品久久久久久影院8一贰佰 | 久草手机在线视频 | 日本成人午夜视频 | 一区在线免费视频 | 毛片大全 | 国色天香综合网 | 精品999www | 本色视频aaaaaa一级网站 | 久久手机在线视频 | 99精品视频一区二区 | 久久亚洲网 | 日韩中文字幕一区二区三区 | 久久精品亚洲一区二区三区观看模式 | 精品一区二区久久久久久按摩 | 黄色va视频| 黄色毛片一级 | 中文字幕网在线 | 羞羞视频在线免费 | 黄色av.com | 欧美成人一区免费视频 | 高清国产午夜精品久久久久久 |