返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >.NET 6 即将到来的新特性隐式命名空间引用
  • 557
分享到

.NET 6 即将到来的新特性隐式命名空间引用

2024-04-02 19:04:59 557人浏览 泡泡鱼
摘要

目录1、Sample2、How it works3、More前言: 今天看到一个更新,可以不需要写 using了,目前还没有正式发布,应该要到 .NET 6 Preview 7 才

前言:

今天看到一个更新,可以不需要写 using了,目前还没有正式发布,应该要到 .NET 6 Preview 7 才会支持。

1、Sample

我们以 Minimal api 为例子

示例:


using Microsoft.Aspnetcore.Builder;

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

或者结合 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 会包含一个新的特性——“隐式命名空间引用”,这个特性将会默认为你的项目添加常用的命名空间,我们就可以不再需要上面的 Imports

2、How it works

它的实现方式也是基于之前的 global using 特性来实现的,编译器会根据 MS Build 中配置的命名空间生成一个 global using 的文件,就像上面的 Imports

目前针对不同的 SDK 类型会添加不同的默认 namespace,目前已有的如下:

针对 Microsoft.NET.Sdk,默认的命名空间如下:


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>


配置对应关系: 

SDK PropertyName
Microsoft.NET.Sdk DisableImplicitNamespaceImports_dotnet
Microsoft.NET.Sdk.Web DisableImplicitNamespaceImports_Web
Microsoft.NET.Sdk.Worker DisableImplicitNamespaceImports_Worker

后面应该会有更多的支持,具体还是要以最终 .NET6 正式发布时为准

我们也可以为我们的 library 启用 global using 的功能,这样在使用的时候也可以不加 using 直接使用

只需要打包的时候在项目文件中增加一个类似下面的 property 到项目里即可


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

3、More

隐式命名空间引用能够使得我们避免写特别多重复的命名空间引用,对于简单的测试应用来说会非常的方便

虽然隐式的命名空间引用能够为我们大大简化代码,不需要再写重复的 using 代码,但是也有可能会对代码造成冲突,比如自己定义的一个类,在自己的命名空间下和默认隐式引用的命名空间下都存在,此时就会造成冲突,如果不能移除默认的命名空间引用,那使用的时候就需要使用完全限定名或者别名可能会有点不太方便

到此这篇关于.NET 6 即将到来的新特性  隐式命名空间引用的文章就介绍到这了,更多相关.NET 6新特性  隐式命名空间引用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: .NET 6 即将到来的新特性隐式命名空间引用

本文链接: https://lsjlt.com/news/135989.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • .NET 6 即将到来的新特性隐式命名空间引用
    目录1、Sample2、How it works3、More前言: 今天看到一个更新,可以不需要写 using了,目前还没有正式发布,应该要到 .NET 6 Preview 7 才...
    99+
    2024-04-02
  • .NET 6 中的隐式命名空间引用
    目录1、历史变化2、新版本介绍3、More usage4、More前言: 之前写过一篇隐式命名空间引用的大概介绍,在一些小的测试项目中也有在用,一直没作为示例给大家分享,主要原因在...
    99+
    2024-04-02
  • .NET6新特性之隐式命名空间引用
    早在 .NET 6 Preview 7版本中微软就已经引入隐式命名空间引用。在.NET Preview 7这个版本中这个功能是默认开启的,如果需要禁用它的化就需要配置Disable...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作