Dyrektywa używania pozwala na użycie typu zdefiniowanego w przestrzeni nazw bez określania w pełni kwalifikowanej przestrzeni nazw dla tego typu. Dodanie globalnego modyfikatora do dyrektywy using oznacza, że using zostanie zastosowane do wszystkich plików w kompilacji (zazwyczaj w projekcie). Dyrektywa globalnego użycia została dodana do C# 10. Składnia jest następująca:
Zalecaną praktyką jest umieszczenie globalnego importu w osobnym pliku (po jednym dla każdego projektu), np. można go nazwać:GlobalUsings.csPlik.
Wprowadzenie do oficjalnej dokumentacji Microsoft:Logowanie do linku jest widoczne.
Umieściliśmy przestrzeń nazw odwoływaną przez Startup.cs do pliku GlobalUsings.cs, pamiętając o dodaniu przed użyciemGlobalnySłowa kluczowe!! Kod jest następujący:
W tym momencie kompilator zgłosi błąd, że "funkcja globalna za pomocą polecenia nie jest dostępna w C# 8.0, prosimy o użycie wersji językowej 10.0 lub nowzej", jak pokazano na poniższym rysunku:
W tym przypadku, biorąc na przykład projekt ASP.NET Core 3.1, wystarczy dwukrotnie kliknąć projekt (plik .csproj) i dodać LangVersion do węzła PropertyGroup Project->, jak pokazano na poniższym rysunku:
To zdanie oznacza, że projekt korzysta ze składni C# 10 w odniesieniu do wersji języka C#:Logowanie do linku jest widoczne.
Plik nie jest jednocześnie zgłaszany jako błądStartup.cs Przestrzeń nazw odwołana przez plik jest wyszarzona, jak pokazano na poniższym rysunku:
Usuwamy odniesienia do Program.cs, Startup.cs, a następnie ponownie kompilujemy projekt, jak pokazano na poniższym obrazku:
używaćILSpy_binaries_7.2.0.6702-preview2Powstały plik WebApplication1.dll jest dekompilowany, jak pokazano na poniższym obrazku:
Plik startowy nadal zawiera referencje do używania i nie generuje się żadnych GlobalUsings.cs plików, więc globalne użycie to po prostu słodycz składni, co upraszcza żmudną pracę programistyczną i znacznie poprawia efektywność pracy.
.NET 6Przestrzenie nazw niejawneOdniesienia są również osiągane dzięki funkcji globalnego użycia.
Obecnie dodano różne domyślne przestrzenie nazw dla różnych typów SDK, a istniejące są następujące:
Dla Microsoft.NET.Sdk domyślna przestrzeń nazw wygląda następująco:
Dla Microsoft.NET.Sdk.Web:
Dla Microsoft.NET.Sdk.Worker:
Jeśli chcesz wyłączyć niejawne odniesienia do przestrzeni nazw, możesz całkowicie wyłączyć tę funkcję za pomocą DisableImplicitNamespaceImports, w następujący sposób:
Jeśli chcesz tylko wyłączyć odwołania do Microsoft.NET.Sdk.Web, możesz skonfigurować DisableImplicitNamespaceImports_Web następująco:
Stwórzmy nowy projekt konsolowy .NET 6.0 do testowania i cały projekt ma tylko Program.cs jeden plik, jak pokazano na poniższym rysunku:
ConsoleApp1.csproj jest skonfigurowany następująco:
Gdzie jest dyrektywa globalnego użycia? Otwórz katalog obj (w którym znajdują się tymczasowe pliki pośrednie generowane podczas procesu kompilacji) i znajdź go w katalogu Debug\net6.0ConsoleApp1.GlobalUsings.g.csPlik:
ConsoleApp1.GlobalUsings.g.cs pliki są automatycznie generowane na podstawie ustawień właściwości ImplicitUsings projektu.
(Koniec)
|