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

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

Intro

之前我们在  ASP.NET Core 6 Minimal API 中曾经提到过现在我们还是需要手动加命名空间引用,在以后的版本中可能就不需要手动加命名空间的引用了,确实是的。

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

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

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>

配置对应关系:

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

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

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

只需要打包的时候在项目文件中增加一个类似下面的 property 到项目里即可,微软的大佬在这里有一个很好的示例 https://github.com/JunTaoLuo/GlobalUsings:

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

More

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金蝶显示服务器异常,金蝶提示云服务器异常

金蝶提示云服务器异常 内容精选换一换生命周期是指弹性云服务器从创建到删除(或释放)历经的各种状态。当云服务器网络异常、防火墙未放行本地远程桌面端口、云服务器CPU负载过高等场景均可能导致云服务器无法正常登录。当您的云服务器无法远程登录时&#xff0c;我们建议您首先…

Ajax 缓存

今天遇到ajax缓存的问题,指定同样的url和参数值总是有缓存&#xff0c;跳不到后台程序里&#xff01; 我先用了一种龌龊的方法,就是在url后又加了个由数据数产生的参数var randMath.random();var url"A.aspx?t"escape(t)"&r"escape(rand); 不知道大家…

S5PC100基于I2C子系统的lm75驱动流程图

转载于:https://blog.51cto.com/387929/1312237

如何有效利用碎片时间?这里有个办法

全世界只有3.14 % 的人关注了青少年数学之旅用了这么久微信&#xff0c;关注的公众号没有上千个&#xff0c;也有上百个&#xff0c;但其实大部分每天主动打开的公众号只有寥寥几个。今天就为大家推荐一些颜值与才华并存的好评公众号&#xff0c;希望你喜欢。【关注方式 】1 - …

mat opencv 修改roi_设置图片ROI(OpenCV学习笔记之二)

ROI相关简介ROI是什么ROI是region of interest首字母的简写&#xff0c;翻译为感性趣的区域。其实在写本篇之前应该写一篇关于图片是什么的学习笔记&#xff0c;但又感觉里面没多少东西还不能承载一篇学习笔记&#xff0c;所以这里只简单提一下。图片是什么其实大家也应该能猜到…

gRPC四种模式、认证和授权实战演示

前言上一篇对gRPC进行简单介绍&#xff0c;并通过示例体验了一下开发过程。接下来说说实际开发常用功能&#xff0c;如&#xff1a;gRPC的四种模式、gRPC集成JWT做认证和授权等。正文1. gRPC四种模式服务以下案例演示&#xff0c;服务端用微软提供的模板创建&#xff0c;客户端…

ajax mode,DWR的三种Reverse Ajax Mode配置详解

Full Streaming ModeEarly Closing ModePolling Mode在DWR应用中.默认启用的是Full Streaming Mode .它是三种modes中最快的一种.它每60秒检查一次浏览器是否是活跃的.配置很简单:dwr-invokerorg.directwebremoting.servlet.DwrServletactiveReverseAjaxEnabledtrue然后在要使用…

WinXP中鲜为人知的28项隐藏功能

WinXP中鲜为人知的28项隐藏功能 Windows的很多隐藏功能&#xff0c;都没有直接体现在菜单或者系统的开始项中&#xff0c;而是直接以文件的形式存在于Windows安装目录中&#xff0c;今天&#xff0c;笔者就带大家认识一下它们吧。 1、免费的系统教程&#xff08;system32文件…

摄像头预览左右翻转_轻薄翻转触控本里的高性能机型:惠普ENVY x360 13评测

自从今年3月末AMD锐龙4000系列处理器正式登陆移动平台以来&#xff0c;目前已有多款机型上市&#xff0c;并涌现出了不少高热度、高性价比的机型。我们也体验测试了其中数款机型&#xff0c;总体上给用户的印象是是价格香、性能强。而今天牛叔要聊的这款机型&#xff0c;也是搭…

Oracle用户、权限、角色管理

Oracle 数据库用户管理Oracle 权限设置一、权限分类&#xff1a;系统权限&#xff1a;系统规定用户使用数据库的权限。&#xff08;系统权限是对用户而言)。实体权限&#xff1a;某种权限用户对其它用户的表或视图的存取权限。&#xff08;是针对表或视图而言的&#xff09;。二…

聊一聊关于聊天记录的存储

背景 即时通讯(Instant Messaging)&#xff0c;也就是我们常说的 IM&#xff0c;其实在很多业务场景上都会有或多或少的应用&#xff0c;有的会是核心&#xff0c;有的会是辅助。既然是聊天&#xff0c;那么必然就会产生聊天记录&#xff0c;而且聊天记录随着人数的增加和时间的…

考勤机信息同步不到服务器,考勤机实时同步功能上线啦

一、考勤机管理重磅上线&#xff0c;告别手动处理打卡数据考勤机打卡仍然是当前企业主流的考勤方式&#xff0c;而考勤机打卡数据的核算也是HR最头痛的一点。HR每个月都要去电脑打开复杂难用的考勤机配套软件&#xff0c;导出并整理打卡数据&#xff0c;逐个统计员工的迟到、早…

对那些刷抖音外放音乐的人,就这么治他!| 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅&#xff08;视频源B站春风里、&#xff09;我最讨厌抖音方外了&#xff01;↓ ↓ ↓

Asp.net 2.0 发送电子邮件

在网上收集的资料&#xff0c;和一点自己的心得 资料1 最基本的小例子&#xff0c;帮助上的例子看着可真够乱的&#xff1a; privatevoidSendMail() { MailMessage message new MailMessage("发件人电子邮件地址", "收件人电子邮件地址"); …

python目前版本强势英雄_王者荣耀目前版本什么英雄强势?

谢邀。在我之前写天梯排行时&#xff0c;总有不少人质疑我的段位和实力&#xff0c;可能是我的排行跟他们理解有所出入&#xff0c;欢迎各位在评论区理性讨论。在写这篇天梯排行前&#xff0c;我先放一下我的段位&#xff0c;证明一下我并不是瞎写乱写的。以下是我2018.5.5打的…

windows 服务实现定时任务调度

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;它可以与c#应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个&#xff0c;百个&#xff0c;甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的c#组件。Quartz的最新版本为Qu…

ios gb2312转utf-8

2019独角兽企业重金招聘Python工程师标准>>> 靠&#xff0c;想写个爬虫功能&#xff0c;结果一直是乱码&#xff0c;终于找到了转码的方法了 (NSString *) gb2312toutf8:(NSData *) data{ NSStringEncoding enc CFStringConvertEncodingToNSStringEncoding(kCFStr…

数学特级教师:数学除了做题目,我还必须让他们看这些!

▲ 点击查看很多时候&#xff0c;我们把数学简单的归为算数&#xff0c;归为计算能力&#xff0c;但数学更多的是一种培养逻辑思维能力的方式。包括一元二次方程、或者向量&#xff0c;或者几何证明。而在我们传统的数学课上&#xff0c;更多的是通过做题来理解数学知识&…

烟袋斜街-后海,印象已模糊

上个周末和猪头&#xff0c;廖廖一起去的。大家都神往已久&#xff0c;但是从未去过&#xff0c;这次一并去了&#xff0c;了却心愿。我不在北京&#xff0c;神往但是不能前去自然可以理解&#xff0c;但是他们两个已经在北京生活了六年&#xff0c;向往了六年&#xff0c;路程…

laya 怎么生成签名_PHP开发API接口签名生成及验证

开发过程中&#xff0c;我们经常会与接口打交道&#xff0c;有的时候是调取别人网站的接口&#xff0c;有的时候是为他人提供自己网站的接口&#xff0c;但是在这调取的过程中都离不开签名验证。我们在设计签名验证的时候&#xff0c;请注意要满足以下几点&#xff1a;可变性&a…