<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          .NET 6 即將到來(lái)的新特性 — 隱式命名空間引用

          共 2865字,需瀏覽 6分鐘

           ·

          2021-07-14 20:39

          .NET 6 即將到來(lái)的新特性 —— 隱式命名空間引用

          Intro

          之前我們?cè)?nbsp; ASP.NET Core 6 Minimal API 中曾經(jīng)提到過(guò)現(xiàn)在我們還是需要手動(dòng)加命名空間引用,在以后的版本中可能就不需要手動(dòng)加命名空間的引用了,確實(shí)是的。

          今天看到一個(gè)更新,可以不需要寫(xiě) using了,目前還沒(méi)有正式發(fā)布,應(yīng)該要到 .NET 6 Preview 7 才會(huì)支持。

          Sample

          還是以我們之前的 Minimal API 為例子

          之前我們的示例可能是這樣的:

          using Microsoft.AspNetCore.Builder;

          var app = WebApplication.Create(args);
          app.Map("/", () => "Hello World");
          app.Run();

          或者結(jié)合 global using 之后把 using 放在一個(gè)單獨(dú)的 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 會(huì)包含一個(gè)新的特性——“隱式命名空間引用”,這個(gè)特性將會(huì)默認(rèn)為你的項(xiàng)目添加常用的命名空間,我們就可以不再需要上面的 Imports

          How it works

          它的實(shí)現(xiàn)方式也是基于之前的 global using 特性來(lái)實(shí)現(xiàn)的,編譯器會(huì)根據(jù) MS Build 中配置的命名空間生成一個(gè) global using 的文件,就像上面的 Imports

          目前針對(duì)不同的 SDK 類型會(huì)添加不同的默認(rèn) namespace,目前已有的如下:

          針對(duì) Microsoft.NET.Sdk,默認(rèn)的命名空間如下:

          System
          System.Collections.Generic
          System.IO
          System.Linq
          System.Net.Http
          System.Threading
          System.Threading.Tasks

          針對(duì) 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

          針對(duì) Microsoft.NET.Sdk.Worker

          Microsoft.Extensions.Configuration
          Microsoft.Extensions.DependencyInjection
          Microsoft.Extensions.Hosting
          Microsoft.Extensions.Logging

          如果你想禁用隱式命名空間引用,可以通過(guò) DisableImplicitNamespaceImports 來(lái)完全禁用這個(gè)功能

          <DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>

          如果你只是想禁用針對(duì) Microsoft.NET.Sdk.Web 的引用則可以配置 DisableImplicitNamespaceImports_Web

          <DisableImplicitNamespaceImports_Web>true</DisableImplicitNamespaceImports_Web>

          配置對(duì)應(yīng)關(guān)系:

          SDKPropertyName
          Microsoft.NET.SdkDisableImplicitNamespaceImports_DotNet
          Microsoft.NET.Sdk.WebDisableImplicitNamespaceImports_Web
          Microsoft.NET.Sdk.WorkerDisableImplicitNamespaceImports_Worker

          后面應(yīng)該會(huì)有更多的支持,具體還是要以最終 .NET6 正式發(fā)布時(shí)為準(zhǔn)

          我們也可以為我們的 library 啟用 global using 的功能,這樣在使用的時(shí)候也可以不加 using 直接使用

          只需要打包的時(shí)候在項(xiàng)目文件中增加一個(gè)類似下面的 property 到項(xiàng)目里即可,微軟的大佬在這里有一個(gè)很好的示例 https://github.com/JunTaoLuo/GlobalUsings:

          <Project>
            <ItemGroup>
              <GlobalUsings Include="Library" />
            </ItemGroup>
          </Project>

          More

          隱式命名空間引用能夠使得我們避免寫(xiě)特別多重復(fù)的命名空間引用,對(duì)于簡(jiǎn)單的測(cè)試應(yīng)用來(lái)說(shuō)會(huì)非常的方便

          雖然隱式的命名空間引用能夠?yàn)槲覀兇蟠蠛?jiǎn)化代碼,不需要再寫(xiě)重復(fù)的 using 代碼,但是也有可能會(huì)對(duì)代碼造成沖突,比如自己定義的一個(gè)類,在自己的命名空間下和默認(rèn)隱式引用的命名空間下都存在,此時(shí)就會(huì)造成沖突,如果不能移除默認(rèn)的命名空間引用,那使用的時(shí)候就需要使用完全限定名或者別名可能會(huì)有點(diǎn)不太方便

          References

          • https://github.com/dotnet/docs/issues/25066
          • https://github.com/dotnet/core/issues/6444
          • https://github.com/dotnet/sdk/pull/18459
          • https://github.com/JunTaoLuo/GlobalUsings


          歡迎各位讀者加入微信群一起學(xué)習(xí)交流,
          在公眾號(hào)后臺(tái)回復(fù)“加群”即可~~

          瀏覽 66
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99精品视频免费 | 在线免费观看黄a | AV高清无码在线 | 亚洲国产精品久久久久久久 | 4438成人网丁香五月五月天 |