MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Spații de nume globale

Dacă dorim să folosim un anumit spațiu de nume în fișierele de cod din proiect, implicit trebuie să-l conectăm în toate fișierele în care planificăm să-l folosim.

De exemplu, să presupunem că avem trei fișiere de cod în proiect:

În fișierul Base.cs este definită clasa Company în spațiul de nume Base:

namespace Base;
class Company
{
   string title;
   public Company(string title) => this.title = title;
   public void Print() => Console.WriteLine($"Compania: {title}");
}

În fișierul Person.cs este definită clasa Person, care folosește clasa Company:

using Base;

class Person
{
   string name;
   Company company;
   public Person(string name, Company company)
   {
       this.name = name;
       this.company = company;
   }
   public void Print()
   {
       Console.WriteLine($"Nume: {name}");
       company.Print();
   }
}

Pentru a folosi clasa Company, conectăm spațiul de nume: using Base;.

În fișierul Program.cs sunt folosite clasele Person și Company:

using Base;

Company microsoft = new("Microsoft");
Person tom = new("Tom", microsoft);
tom.Print();

Din nou, pentru a folosi clasa Company, conectăm spațiul de nume: using Base;.

Și pot exista multe astfel de fișiere în care trebuie să conectăm spațiul de nume Base (sau altul). Acest lucru nu este foarte convenabil. În .NET 6 a fost introdusă conceptul de spații de nume globale, care se conectează o singură dată și imediat în toate fișierele de cod din proiect. Pentru aceasta, este suficient să scriem într-un fișier directiva:

global using conectat_spatiu_de_nume;

De exemplu, să modificăm fișierul Program.cs astfel:

global using Base;

Company microsoft = new("Microsoft");
Person tom = new("Tom", microsoft);
tom.Print();

Acum, spațiul de nume Base este conectat în toate fișierele de cod din proiect. Și din fișierul Person.cs putem elimina linia:

using Base;

Definirea spațiilor de nume globale într-un fișier separat

Totuși, abordarea de mai sus poate să nu fie foarte convenabilă, deoarece este mai simplu să definim spațiile de nume globale care se conectează în tot proiectul într-un singur loc. Pentru aceasta, în Visual Studio 2022 putem adăuga în proiect un nou fișier cu cod C# și în acesta putem defini un set de spații de nume conectate.

De exemplu, să adăugăm în proiect un fișier pe care îl numim GlobalUsings.cs și în care definim următorul conținut:

global using System.Text;
global using System.Reflection;
global using Base;

Și acest set de spații de nume va fi conectat automat în toate fișierele de cod din proiect.

← Lecția anterioară Lecția următoare →