Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1410 of 1492 menu
◀ ▶

ModuleInitializer

Метод должен быть static, void и без параметров. Нужен using System.Runtime.CompilerServices. Инициализатор срабатывает раньше Main.

Синтаксис

[ModuleInitializer] internal static void InitModule() { }

Пример

Давайте установить флаг в инициализаторе и прочитать его в Main:

using System; using System.Runtime.CompilerServices; class Program { static bool ready; [ModuleInitializer] internal static void InitModule() { ready = true; } static void Main() { bool res = ready; Console.WriteLine(res); } }

Результат выполнения кода:

True

Пример

Давайте проверить, что метод помечен ModuleInitializer:

using System; using System.Reflection; using System.Runtime.CompilerServices; class Program { [ModuleInitializer] internal static void InitModule() { } static void Main() { MethodInfo method = typeof(Program).GetMethod( "InitModule", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); bool res = method.IsDefined(typeof(ModuleInitializerAttribute), false); Console.WriteLine(res); } }

Результат выполнения кода:

True

Пример

Давайте записать значение в статическое поле при загрузке:

using System; using System.Runtime.CompilerServices; class Program { static int token; [ModuleInitializer] internal static void InitModule() { token = 12345; } static void Main() { int res = token; Console.WriteLine(res); } }

Результат выполнения кода:

12345

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить