Обложка канала

.NET Разработчик

Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин

.NET Разработчик

4 года назад
Открыть в
День 1193. #ЗаметкиНаПолях #TipsAndTricks Временно Изменяем CurrentCulture Иногда для тестирования некоторых функций вам требуется изменить культуру потока, в котором работает приложение. Текущая культура определяется в глобальном свойстве Thread.CurrentThread.CurrentCulture. Создадим класс, который реализует интерфейс IDisposable, чтобы иметь ограниченный блок кода, в котором будет использоваться новая культура:
public class TempCulture : IDisposable
{
  CultureInfo _old;

  public TempCulture(CultureInfo culture)
  {
    _old = CultureInfo.CurrentCulture;
    Thread.CurrentThread.CurrentCulture = culture;
  }

  public void Dispose()
  {
    Thread.CurrentThread.CurrentCulture = _old;
  }
}

В конструкторе сохраняем текущую культуру в приватном поле. Затем, когда мы вызываем метод Dispose (который неявно вызывается при закрытии блока using), мы используем это значение для восстановления исходной культуры. Например, проверим символ валюты:
Thread.CurrentThread.CurrentCulture = 
  new CultureInfo("ja-jp");

Console.WriteLine(
  Thread.CurrentThread.CurrentCulture
   .NumberFormat.CurrencySymbol
 );
//¥

using (new TempCulture(new CultureInfo("ru-ru")))
{
  Console.WriteLine(
    Thread.CurrentThread.CurrentCulture
      .NumberFormat.CurrencySymbol
  );
  //₽
}

Console.WriteLine(
  Thread.CurrentThread.CurrentCulture
    .NumberFormat.CurrencySymbol
);
//¥

Сначала мы устанавливаем культуру текущего потока на японскую, и получаем символ валюты – йену ¥. Затем временно переходим на русскую культуру и в консоль выводится рубль ₽. Наконец, когда мы выходим за пределы блока using, мы снова получаем йену. Итого Использование класса, реализующего IDisposable, — хороший способ создать временную среду с характеристиками, отличными от характеристик основной среды. Источник: dev.to/bellone…ure-2bp7