środa, 7 października 2015

Zmiana culture w bloku using

Bawiłem się kultura i potrzebuję kodu, który zostanie wywołany dla konkretnej kultury, a później wróci do poprzedniej kultury. Żeby to zrobić najprościej to należy użyć interfejsu IDisposable i tyle.
public class CultureContext : IDisposable
  {
      private CultureInfo contextCultureInfo = null;
 
      private CultureInfo exitCultureInfo = null;
 
 
   public CultureContext(CultureInfo ci)
   {
       exitCultureInfo = GetCulture();
       contextCultureInfo = ci;
       SetCulture(ci);
   }
 
   public void Dispose()
   {
       SetCulture(exitCultureInfo);
   }
 
      public virtual void SetCulture(CultureInfo ci)
      {
          Thread.CurrentThread.CurrentUICulture = ci;
          Thread.CurrentThread.CurrentCulture = ci;
      }
 
      public virtual CultureInfo GetCulture()
      {
          return Thread.CurrentThread.CurrentCulture;
      }
 
  }
Wtedy zastosowanie kultury w bloku using jest proste:
using (new CultureContext(new CultureInfo("en-US")))
{
      ...
}
Im prostsze rozwiązanie tym lepsze :)

Brak komentarzy:

Prześlij komentarz