Глобальные Директивы Using в C #10
Размер поста в телеграмме ограничен, поэтому я часто пытаюсь сократить его, насколько это возможно. Больше всего проблем доставляют примеры кода. С одной стороны, хочется показать пример, который можно было бы скопировать и выполнить, и всё бы работало. С другой стороны, C# довольно многословен, в отличие от того же F# или чисто скриптовых языков, например. Поэтому приходится удалять из кода всё лишнее. Это касается в том числе директив using в начале файла. Часто они просто загромождают код и редко добавляют ему какую-то ценность.
В .NET 6 и C #10 появились глобальные директивы
using. Теперь вы можете поместить все общие директивы using (в основном, System) в один файл, который будет автоматически доступен для использования в рамках всего проекта.Помните, что эта функция доступна только в .NET 6. Кроме того, на данный момент вам может потребоваться отредактировать файл
.csproj, чтобы разрешить функции в предварительном просмотре (см. LangVersion):<Project Sdk="Microsoft.NET.Sdk">Синтаксис для добавления глобальных директив
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>
using на самом деле довольно прост: добавьте ключевое слово global перед любым using в любом месте, чтобы сделать директиву глобальной.global using System;Интересно, что пока нет чётко определённого места для их размещения. Вы можете поместить их в любой файл в своем проекте, и они сразу станут глобальными везде (в отличие от стандартного AssemblyInfo.cs, который у нас был раньше).
При этом некоторые используют файл
GlobalUsings.cs в корне проекта, содержащий что-нибудь вроде:global using System;Нет ограничений на количество директив using, которые вы можете разместить здесь, или на то, где находится этот файл, но, как правило, неплохо, чтобы этот список был достаточно кратким и содержал только то, что нужно. При этом единственным недостатком добавления сюда всего, что взбредёт в голову, будет то, что IntelliSense может сойти с ума, ну и выдавать вам километровые списки предложений.
global using System.Collections.Generic;
global using System.IO;
global using System.Linq;
Публичное обсуждение функционала ведётся здесь: https://github.com/dotnet/csharplang/issues/3428
Источник: https://dotnetcoretutorials.com/2021/08/19/global-using-statements-in-c10/