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