Direktivets användning tillåter användning av en typ definierad i ett namnrymd utan att specificera ett fullt kvalificerat namnrymd för den typen. Att lägga till den globala modifieraren i using direktivet innebär att using kommer att tillämpas på alla filer i kompileringen (vanligtvis ett projekt). Den globala användningsdirektivet lades till i C# 10. Syntaxen är:
Den rekommenderade metoden är att lägga den globala importen i en separat fil (en för varje projekt), t.ex. kan den heta:GlobalUsings.csFil.
Microsofts officiella dokumentationsintroduktion:Inloggningen med hyperlänken är synlig.
Vi lägger in namnrymden som Startup.cs refererar till i GlobalUsings.cs-filen, och kommer ihåg att lägga till innan vi använderglobaltNyckelord!! Koden är följande:
Vid denna tidpunkt rapporterar kompilatorn ett fel som säger att "funktionen global med kommandot inte är tillgänglig i C# 8.0, vänligen använd språkversion 10.0 eller senare", som visas i figuren nedan:
I detta fall, om vi tar ASP.NET Core 3.1-projektet som exempel, behöver du bara dubbelklicka på projektet (.csproj-filen) och lägga till LangVersion i Project-> PropertyGroup-noden, som visas i följande figur:
Denna mening betyder att projektet använder syntaxen från C# 10 avseende C#-språkversionering:Inloggningen med hyperlänken är synlig.
Filen rapporteras inte som ett fel samtidigtStartup.cs Namnrymden som refereras till i filen är nedtonad, som visas i figuren nedan:
Vi tar bort referenserna till Program.cs, Startup.cs och kompilerar sedan om projektet som visas på bilden nedan:
användaILSpy_binaries_7.2.0.6702-preview2Den resulterande WebApplication1.dll filen dekompileras som visas i följande bild:
Startfilen har fortfarande referenser till användning, och inga GlobalUsings.cs filer genereras, så global användning är bara syntaxsocker, vilket förenklar en del tråkigt programmeringsarbete och förbättrar arbetseffektiviteten avsevärt.
.NET 6Implicita namnrymderReferenser uppnås också genom att använda funktionen global use.
För närvarande har olika standardnamnrymder lagts till för olika SDK-typer, och de befintliga är följande:
För Microsoft.NET.Sdk är standardnamnrymden följande:
För Microsoft.NET.Sdk.Web:
För Microsoft.NET.Sdk.Worker:
Om du vill inaktivera implicita namnrymdsreferenser kan du stänga av denna funktion helt via DisableImplicitNamespaceImports, enligt följande:
Om du bara vill inaktivera referenser till Microsoft.NET.Sdk.Web kan du konfigurera DisableImplicitNamespaceImports_Web enligt följande:
Låt oss skapa ett nytt .NET 6.0-konsolprojekt för testning, och hela projektet har bara Program.cs en fil, som visas i figuren nedan:
ConsoleApp1.csproj är konfigurerad enligt följande:
Var finns direktivet om global användning? Öppna obj-katalogen (som innehåller de mellanliggande temporära filerna som genereras under kompileringsprocessen) och hitta den i Debug\net6.0-katalogenConsoleApp1.GlobalUsings.g.csFil:
ConsoleApp1.GlobalUsings.g.cs filer genereras automatiskt baserat på projektets ImplicitUsings-egenskapsinställningar.
(Slut)
|