Глобальные пространства имен

Последнее обновление: 10.11.2021

Если мы хотим использовать какое-нибудь пространство имен в файлах кода в проекте, то по умолчанию нам надо его подключать во все файлы, где мы планируем его использовать.

Например, пусть у нас в проекте есть три файла с кодом:

Глобальные пространства имен в C# и .NET

В файле Base.cs определяется класс Company в пространстве Base:

namespace Base;
class Company
{
    string title;
    public Company(string title) => this.title = title;
    public void Print() => Console.WriteLine($"Компания: {title}");
}

В файле Person.cs определен класс Person, который использует класс 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($"Имя: {name}");
        company.Print();
    }
}

Чтобы использовать класс Company мы подключаем его пространство имен: using Base;

В классе Program.cs используются классы Person и Company:

using Base;

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

Опять же чтобы использовать класс Company, подключается его пространство имен: using Base;

И таких файлов, где надо подключать пространство Base (или какое-то другое) может быть множество. Это не очень удобно. И в .NET 6 для этого предложена концепция глобальных пространств имен, который подключаются один раз но сразу во все файлы кода в проекте. Для этого нам достаточно в одном файле прописать директиву:

global using подключаемое_пространство_имен;

Например, изменим файл Program.cs следующим образом:

global using Base;

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

Теперь пространство Base подключается во все файлы кода в проекте. И из файла Person.cs мы можем убрать строку

using Base;

Определение глобальных пространств в отдельном файле

Однако вышеуказанный подход опять же может быть не очень удобным, поскольку проще определить глобальные пространство имен, которые подключаются во весь проект где-то в одном месте. И для этого в Visual Studio 2022 мы можем добавить в проект новый файл с кодом C# и в нем определить набор подключаемых пространств имен. Например, добавим в проект файл, который назовем GlobalUsings.cs и в котором определим следующее содержимое:

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

И этот набор пространств имен будет автоматически подключаться во все файлы кода в проекте.

Файл GlobalUsings.cs и глобальные пространства имен в C# и .NET и в Visual Studio 2022
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850