When converting for instance a decimal to a string, you use the CultureInfo.InvariantCulture and pass it as an IFormatProvider>
Handy extension method of Peter's solution (modified to test also for IConvertible).
public static string ToInvariantString(this object obj)
{
return obj is IConvertible ? ((IConvertible)obj).ToString(CultureInfo.InvariantCulture)
: obj is IFormattable ? ((IFormattable)obj).ToString(null, CultureInfo.InvariantCulture)
: obj.ToString();
}