Direktiva o uporabi dovoljuje uporabo tipa, definiranega v imenskem prostoru, brez določanja popolnoma kvalificiranega imenskega prostora za ta tip. Dodajanje globalnega modifikatorja v direktivo using pomeni, da bo using uporabljen uporabljen za vse datoteke v prevajanju (običajno projekt). Globalna direktiva uporabe je bila dodana v C# 10. Sintaksa je:
Priporočena praksa je, da se globalni uvoz shrani v ločeno datoteko (po eno za vsak projekt), npr. lahko se poimenuje:GlobalUsings.csDatoteka.
Uvod v uradno dokumentacijo Microsofta:Prijava do hiperpovezave je vidna.
Imenski prostor, na katerega se sklicuje Startup.cs, vnesemo v GlobalUsings.cs datoteko, pri čemer se spomnimo dodati pred uporaboglobalnoKljučne besede!! Koda je naslednja:
Takrat bo prevajalnik poročal o napaki, da "funkcija globalna uporaba ukaza ni na voljo v C# 8.0, prosimo, uporabite jezikovno različico 10.0 ali novejšo", kot je prikazano na spodnji sliki:
V tem primeru, če vzamemo kot primer projekt ASP.NET Core 3.1, je dovolj, da dvakrat kliknete na projekt (.csproj datoteko) in dodate LangVersion v vozlišče PropertyGroup Project->, kot je prikazano na naslednji sliki:
Ta stavek pomeni, da projekt uporablja sintakso C# 10 glede verzioniranja jezika C#:Prijava do hiperpovezave je vidna.
Datoteka hkrati ni prijavljena kot napakaStartup.cs Imenski prostor, na katerega se sklicuje datoteka, je siv, kot je prikazano na spodnji sliki:
Odstranimo reference Program.cs, Startup.cs in nato projekt ponovno prevedemo, kot je prikazano na spodnji sliki:
uporabitiILSpy_binaries_7.2.0.6702-preview2Nastala WebApplication1.dll datoteka je dekompilirana, kot je prikazano na naslednji sliki:
Zagonska datoteka še vedno vsebuje reference, GlobalUsings.cs datotek pa se ne generirajo, zato je globalna uporaba le sladica sintakse, kar poenostavi nekaj dolgočasnega programiranja in močno izboljša učinkovitost dela.
.NET 6Implicitni imenski prostoriReference se prav tako dosežejo z uporabo funkcije global using (globalna uporabnost).
Trenutno so dodani različni privzeti imenski prostori za različne vrste SDK, obstoječi pa so naslednji:
Za Microsoft.NET.Sdk je privzeti imenski prostor naslednji:
Za Microsoft.NET.Sdk.Web:
Za Microsoft.NET.Sdk.Worker:
Če želite onemogočiti implicitne reference imenskega prostora, lahko to funkcijo popolnoma onemogočite preko DisableImplicitNamespaceImports, kot sledi:
Če želite le onemogočiti reference na Microsoft.NET.Sdk.Web, lahko DisableImplicitNamespaceImports_Web nastavite takole:
Ustvarimo nov .NET 6.0 konzolni projekt za testiranje, pri čemer ima celoten projekt le Program.cs eno datoteko, kot je prikazano na spodnji sliki:
ConsoleApp1.csproj je konfiguriran takole:
Kje je direktiva za globalno uporabo? Odprite mapo obj (ki vsebuje vmesne začasne datoteke, ustvarjene med postopkom prevajanja) in jo poiščite v mapi Debug\net6.0ConsoleApp1.GlobalUsings.g.csDatoteka:
ConsoleApp1.GlobalUsings.g.cs datoteke se samodejno generirajo glede na nastavitve lastnosti ImplicitUsings v projektu.
(Konec)
|