介绍
.NET 6 中新增了两个功能,全局引用和隐式引用,它们能减少我们需要添加到新.cs文件中的 using 语句的数量。
什么是隐式引用?
如果使用模板创建新的 ASP.NET API,然后打开该文件,您会发现默认启用隐式使用(第 6 行)
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
它为所有文件提供一些隐式使用,因此你不必将它们添加到您创建的每个文件中,这是非常方便的,但可能会导致一些问题,我们将在后面讨论。
什么是全局引用?
在单个文件中使用全局引用,全局引用就会被 .NET 项目中的所有文件所引用,你不必在每个项目中单独添加。
global using System;
global using System.Collections.Generic;
global using System.Linq;
global using System.Threading;
global using System.Threading.Tasks;
全局引用和隐式引用的使用
我们写代码的时候要遵循SOLID原则。第一个S代表单一责任原则,这表示我们在设计一个类的时候,通常希望这个类的职责是比较单一的,当我们打开一个.cs文件时,我们看到一个类,通常我们会观察这个文件的上方using语句里引用了那些命名空间,进而去推断这个类使用了哪些功能,比如我们看到了它使用了System.IO,我们会去推断该类可能会操作文件的读写,但如果我们使用了隐式引用,我们就无法看到System.IO,如此经典的命名空间的引用了,那么我们就无法推断这个类使用了哪些功能,而且.NET 6 为我们提供的隐式引入,我们是无法改变他默认提供的这七个引用的。
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
所以说不建议使用隐式引入,把配置中的enable改成disable,,然后只是将 using 语句的削减版本添加到项目根目录下的 GlobalUsings.cs 文件中。(删除了System.IO和
System.Net.Http
),这样当我们打开一个类的时候,就会更好的知道这个类是用来做什么的。
global using System;
global using System.Collections.Generic;
global using System.Linq;
global using System.Threading;
global using System.Threading.Tasks;