Smernica o používaní umožňuje použitie typu definovaného v mennom priestore bez špecifikácie plne kvalifikovaného menného priestoru pre tento typ. Pridaním globálneho modifikátora do smernice using sa použije na všetky súbory v kompilácii (zvyčajne projekt). Globálna direktíva bola pridaná do C# 10. Syntax je:
Odporúčaná prax je uložiť globálny import do samostatného súboru (jeden pre každý projekt), napríklad môže byť pomenovaný:GlobalUsings.csSúbor.
Úvod do oficiálnej dokumentácie Microsoftu:Prihlásenie na hypertextový odkaz je viditeľné.
Menný priestor, na ktorý Startup.cs odkazuje, sme vložili do GlobalUsings.cs súboru, pričom sme nezabudli pridať pred použitímGlobálneKľúčové slová!! Kód je nasledovný:
V tomto momente kompilátor hlási chybu, že "funkcia globálna pomocou príkazu nie je dostupná v C# 8.0, použite jazykovú verziu 10.0 alebo novšiu", ako je znázornené na obrázku nižšie:
V tomto prípade, ak vezmeme ako príklad projekt ASP.NET Core 3.1, stačí dvakrát kliknúť na projekt (.csproj súbor) a pridať LangVersion do uzla PropertyGroup Project->, ako je znázornené na nasledujúcom obrázku:
Táto veta znamená, že projekt používa syntax C# 10 pre verzionovanie jazyka C#:Prihlásenie na hypertextový odkaz je viditeľné.
Súbor sa zároveň nehlási ako chybaStartup.cs Menný priestor, na ktorý sa súbor odkazuje, je sivý, ako je znázornené na obrázku nižšie:
Odstraňujeme odkazy na Program.cs, Startup.cs a potom projekt znovu kompilujeme, ako je znázornené na obrázku nižšie:
použiťILSpy_binaries_7.2.0.6702-preview2Výsledný WebApplication1.dll súbor je dekompilovaný, ako je znázornené na nasledujúcom obrázku:
Spúšťací súbor stále obsahuje referencie na použitie a žiadne GlobalUsings.cs súbory sa negenerujú, takže globálne používanie je len syntax cukr, čo zjednodušuje niektoré zdĺhavé programátorské práce a výrazne zlepšuje efektivitu práce.
.NET 6Implicitné menné priestoryReferencie sa dosahujú aj pomocou funkcie globálneho používania.
V súčasnosti sa pridávajú rôzne predvolené menné priestory pre rôzne typy SDK a existujúce sú nasledovné:
Pre Microsoft.NET.Sdk je predvolený menný priestor nasledovný:
Pre Microsoft.NET.Sdk.Web:
Pre Microsoft.NET.Sdk.Worker:
Ak chcete zakázať implicitné odkazy na menný priestor, môžete túto funkciu úplne vypnúť cez DisableImplicitNamespaceImports, nasledovne:
Ak chcete len vypnúť odkazy na Microsoft.NET.Sdk.Web, môžete DisableImplicitNamespaceImports_Web nastaviť nasledovne:
Vytvorme nový .NET 6.0 konzolový projekt na testovanie a celý projekt má len Program.cs jeden súbor, ako je znázornené na obrázku nižšie:
ConsoleApp1.csproj je nakonfigurovaný nasledovne:
Kde je globálna smernica o používaní? Otvorte adresár obj (ktorý obsahuje medziľahlé dočasné súbory generované počas kompilácie) a nájdite ho v adresári Debug\net6.0ConsoleApp1.GlobalUsings.g.csSúbor:
ConsoleApp1.GlobalUsings.g.cs súbory sa automaticky generujú na základe nastavení vlastností ImplicitUsings projektu.
(Koniec)
|