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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

.NET 6新特性试用 | 隐式using指令

發布時間:2023/12/4 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET 6新特性试用 | 隐式using指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在使用《最小Web API》時,我們發現,相比以前的代碼,大量的using指令消失了:

using指令的主要作用是允許使用在命名空間中定義的類型,而無需指定該類型的完全限定命名空間。

那么,在.NET 6下為什么不需要了呢?

ImplicitUsings屬性

遍歷項目下的所有文件,最后在csproj中找到這樣一個屬性,應該和using指令相關:

將屬性值改成disable,則編譯失敗:

需要在文件頂部加上using指令:

也就是說,編譯時其實還是需要using指令的。

那它們寫在哪了?

global using指令

打開obj目錄(用于存放編譯過程中生成的中間臨時文件),在cs文件的對應目錄發現了WebApplication1.GlobalUsings.g.cs文件:

原來using都寫在這里了:

//?<auto-generated/> global?using?global::Microsoft.AspNetCore.Builder; global?using?global::Microsoft.AspNetCore.Hosting; global?using?global::Microsoft.AspNetCore.Http; global?using?global::Microsoft.AspNetCore.Routing; global?using?global::Microsoft.Extensions.Configuration; global?using?global::Microsoft.Extensions.DependencyInjection; global?using?global::Microsoft.Extensions.Hosting; global?using?global::Microsoft.Extensions.Logging; global?using?global::System; global?using?global::System.Collections.Generic; global?using?global::System.IO; global?using?global::System.Linq; global?using?global::System.Net.Http; global?using?global::System.Net.Http.Json; global?using?global::System.Threading; global?using?global::System.Threading.Tasks;

global using的官方文檔說明如下:

向 using 指令添加 global 修飾符意味著 using 將應用于編譯中的所有文件(通常是一個項目)

也就是說,對于任何命名空間,無需再在每個文件上寫using指令,只需在一個文件中寫global using指令即可。

而WebApplication1.GlobalUsings.g.cs文件是基于ImplicitUsings屬性設置自動生成的。

那么,為啥會自動包含這些命名空間呢?

GenerateGlobalUsings任務

使用MSBuild Structured Log Viewer(使用方法請參看《天吶!你知道MSBuild都干了些什么》)查看MSBuild的輸出日志,可以看到WebApplication1.GlobalUsings.g.cs文件是由GenerateGlobalUsings任務生成的:

而任務參數數據來源于Using參數:

<GenerateGlobalUsings?Usings="@(Using)"><Output?TaskParameter="Lines"?ItemName="_GlobalUsingLines"?/> </GenerateGlobalUsings>

而具體值來源于項目引用的SDK:

結論

了解原理后,我們可以使用項目文件,即可增加我們的自定義global using:

<ItemGroup><Using?Include="GlobalUsingDemo"?/> </ItemGroup>

利用隱式using指令,再也不用在cs文件中寫using指令了!

如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“

總結

以上是生活随笔為你收集整理的.NET 6新特性试用 | 隐式using指令的全部內容,希望文章能夠幫你解決所遇到的問題。

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