Директива using дозволяє використовувати тип, визначений у просторі імен без визначення повністю кваліфікованого простору імен для цього типу. Додавання глобального модифікатора до директиви використання означає, що use буде застосовано до всіх файлів компіляції (зазвичай проєкту). Директива глобального використання була додана до C# 10. Синтаксис такий:
Рекомендується помістити глобальний імпорт у окремий файл (по одному для кожного проєкту), наприклад, його можна назвати:GlobalUsings.csФайл.
Офіційний вступ до документації Microsoft:Вхід за гіперпосиланням видно.
Ми вставляємо простір іменів, на який посилається Startup.cs, у GlobalUsings.cs-файл, не забуваючи додати перед використаннямГлобальнийКлючові слова!! Код виглядає так:
У цей момент компілятор повідомить про помилку, що «функція глобального використання команди недоступна в C# 8.0, будь ласка, використовуйте мову версії 10.0 або пізніше», як показано на рисунку нижче:
У цьому випадку, взявши приклад проєкту ASP.NET Core 3.1, достатньо лише двічі клікнути на проєкт (файл .csproj) і додати LangVersion до вузла PropertyGroup Project->, як показано на наступному рисунку:
Це речення означає, що проєкт використовує синтаксис C# 10 щодо версування мови C#:Вхід за гіперпосиланням видно.
Файл не повідомляється як помилка, водночасStartup.cs Простір назв, на який посилається файл, сірий, як показано на рисунку нижче:
Ми видаляємо посилання на Program.cs, Startup.cs, а потім перекомпілюємо проєкт, як показано на зображенні нижче:
використанняILSpy_binaries_7.2.0.6702-preview2Отриманий файл WebApplication1.dll декомпілюється, як показано на наступному зображенні:
Файл запуску все ще має посилання на використання, і жоден файл GlobalUsings.cs не генерується, тому глобальне використання — це просто синтаксичний цукор, що спрощує деяку нудну роботу програмування і значно підвищує ефективність роботи.
.NET 6Неявні простори іменРеференси також досягаються за допомогою глобальної функції використання.
Наразі додаються різні стандартні простори імен для різних типів SDK, і існуючі такі:
Для Microsoft.NET.Sdk простір імен за замовчуванням виглядає так:
Для Microsoft.NET.Sdk.Web:
Для Microsoft.NET.Sdk.Worker:
Якщо ви хочете вимкнути неявні посилання на простор назв, ви можете повністю вимкнути цю функцію через DisableImplicitNamespaceImports, наступним чином:
Якщо ви просто хочете вимкнути посилання на Microsoft.NET.Sdk.Web, ви можете налаштувати DisableImplicitNamespaceImports_Web наступним чином:
Створимо новий проєкт для консолі .NET 6.0 для тестування, і весь проєкт має лише Program.cs один файл, як показано на рисунку нижче:
ConsoleApp1.csproj налаштований таким чином:
Де знаходиться директива глобального використання? Відкрийте папку obj (де зберігаються проміжні тимчасові файли, створені під час компіляції) і знайдіть його в каталозі Debug\net6.0ConsoleApp1.GlobalUsings.g.csФайл:
ConsoleApp1.GlobalUsings.g.cs файли автоматично генеруються на основі параметрів властивостей ImplicitUsing проєкту.
(Кінець)
|