.NET 6 即將到來的新特性 隱式命名空間引用
前言:
今天看到一個更新,可以不需要寫 using了,目前還沒有正式發(fā)布,應(yīng)該要到 .NET 6 Preview 7 才會支持。
1、Sample
我們以 Minimal API 為例子
示例:
using Microsoft.AspNetCore.Builder;
var app = WebApplication.Create(args);
app.Map("/", () => "Hello World");
app.Run();
或者結(jié)合 global using 之后把 using 放在一個單獨的 Imports 文件中,
Imports:
@global using Microsoft.AspNetCore.Builder;
Program:
var app = WebApplication.Create(args);
app.Map("/", () => "Hello World");
app.Run();
在 .NET 6 Preview 7 中,我們將不需要再加 using 了,Preview 7 會包含一個新的特性——“隱式命名空間引用”,這個特性將會默認(rèn)為你的項目添加常用的命名空間,我們就可以不再需要上面的 Imports 了
2、How it works
它的實現(xiàn)方式也是基于之前的 global using 特性來實現(xiàn)的,編譯器會根據(jù) MS Build 中配置的命名空間生成一個 global using 的文件,就像上面的 Imports
目前針對不同的 SDK 類型會添加不同的默認(rèn) namespace,目前已有的如下:
針對 Microsoft.NET.Sdk,默認(rèn)的命名空間如下:
System System.Collections.Generic System.IO System.Linq System.Net.Http System.Threading System.Threading.Tasks
針對 Microsoft.NET.Sdk.Web
System.Net.Http.Json Microsoft.AspNetCore.Builder Microsoft.AspNetCore.Hosting Microsoft.AspNetCore.Http Microsoft.AspNetCore.Routing Microsoft.Extensions.Configuration Microsoft.Extensions.DependencyInjection Microsoft.Extensions.Hosting Microsoft.Extensions.Logging
針對 Microsoft.NET.Sdk.Worker
Microsoft.Extensions.Configuration Microsoft.Extensions.DependencyInjection Microsoft.Extensions.Hosting Microsoft.Extensions.Logging
如果你想禁用隱式命名空間引用,可以通過 DisableImplicitNamespaceImports 來完全禁用這個功能
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
如果你只是想禁用針對 Microsoft.NET.Sdk.Web 的引用則可以配置 DisableImplicitNamespaceImports_Web
<DisableImplicitNamespaceImports_Web>true</DisableImplicitNamespaceImports_Web>
配置對應(yīng)關(guān)系:
| SDK | PropertyName |
|---|---|
| Microsoft.NET.Sdk | DisableImplicitNamespaceImports_DotNet |
| Microsoft.NET.Sdk.Web | DisableImplicitNamespaceImports_Web |
| Microsoft.NET.Sdk.Worker | DisableImplicitNamespaceImports_Worker |
后面應(yīng)該會有更多的支持,具體還是要以最終 .NET6 正式發(fā)布時為準(zhǔn)
我們也可以為我們的 library 啟用 global using 的功能,這樣在使用的時候也可以不加 using 直接使用
只需要打包的時候在項目文件中增加一個類似下面的 property 到項目里即可
<Project>
<ItemGroup>
<GlobalUsings Include="Library" />
</ItemGroup>
</Project>
3、More
隱式命名空間引用能夠使得我們避免寫特別多重復(fù)的命名空間引用,對于簡單的測試應(yīng)用來說會非常的方便
雖然隱式的命名空間引用能夠為我們大大簡化代碼,不需要再寫重復(fù)的 using 代碼,但是也有可能會對代碼造成沖突,比如自己定義的一個類,在自己的命名空間下和默認(rèn)隱式引用的命名空間下都存在,此時就會造成沖突,如果不能移除默認(rèn)的命名空間引用,那使用的時候就需要使用完全限定名或者別名可能會有點不太方便
到此這篇關(guān)于.NET 6 即將到來的新特性 隱式命名空間引用的文章就介紹到這了,更多相關(guān).NET 6新特性 隱式命名空間引用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
.Net?Core?配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot
這篇文章主要介紹了.Net?Core配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
深入分析XmlSerializer對象的Xml序列化與反序列化的示例詳解
本篇文章是對XmlSerializer 對象的Xml序列化與反序列化的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
asp.net mvc路由篇 如何找到 IHttpHandler方法介紹
學(xué)習(xí)是使用asp.net已經(jīng)有很長一段時間了,現(xiàn)在就來分析一下mvc的整過過程吧。個人計劃寫一個mvc系列的博文,僅從源代碼的角度來分析mvc。在接觸mvc時我們一定會經(jīng)歷路由,那么路由這東東是怎么搞出來的啊2012-11-11
.NET?中配置從xml轉(zhuǎn)向json方法示例詳解
這篇文章主要為大家介紹了.NET?中配置從xml轉(zhuǎn)向json方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
.NET??Smobiler的復(fù)雜控件的由來與創(chuàng)造
這篇文章主要介紹了.NET Smobiler的復(fù)雜控件的由來與創(chuàng)造,Smobiler的復(fù)雜控件即利用自定義控件的方式組合控件,來使控件成為一個有機整體,里面的控件可相互協(xié)作交互,并使其達(dá)到高可用2022-08-08

