using System; using System.Globalization; using System.Threading; namespace Deltares.Maps { public static class CultureHelper { public static void InvokeWithDutchCulture(Action action) { var nlCulture = new CultureInfo("nl-NL"); InvokeWithCulture(nlCulture, action); } public static void InvokeWithUSCulture(Action action) { var usCulture = new CultureInfo("en-US"); InvokeWithCulture(usCulture, action); } public static T InvokeWithDutchCulture(Func func) { var culture = new CultureInfo("nl-NL"); return InvokeWithCulture(culture, func); } public static T InvokeWithUSCulture(Func func) { var culture = new CultureInfo("en-US"); return InvokeWithCulture(culture, func); } public static T InvokeWithCulture(CultureInfo targetCulture, Func func) { CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; try { // set the current thread to dutch culture to mimic floating piont numbers with a comma Thread.CurrentThread.CurrentCulture = targetCulture; return func(); } finally { Thread.CurrentThread.CurrentCulture = currentCulture; } } public static void InvokeWithCulture(CultureInfo targetCulture, Action testAction) { CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; try { // set the current thread to dutch culture to mimic floating piont numbers with a comma Thread.CurrentThread.CurrentCulture = targetCulture; testAction(); } finally { Thread.CurrentThread.CurrentCulture = currentCulture; } } } }