![](/img/trans.png)
[英]How to configure ApplicationInsightsTelemetry, in .NET Core Web Api
[英]Configure .Net Core 3 web API to always parse numbers with invariant Culture
我不知道标题是否有意义,但简而言之,我们需要解析作为字符串传递的双精度数。 但我们无法控制数字的格式(例如句点与逗号小数分隔符)
因此,我们需要使用 Invariant Culture 和 Number Styles 来解析某些文本字段,如下所示:
double.TryParse(ResponseObject.Ammount,
NumberStyles.Any,
CultureInfo.InvariantCulture,
out double amt);
问题是,很难在任何地方强制使用这种重载方法。 所以我希望你可以在 Startup.cs 中配置不变文化的使用,但是我真的不知道该怎么做。
启动中的配置:
private void ConfigureLocalization(IServiceCollection services)
{
var jsonLocalizationOptions = Configuration.GetSection(nameof(JsonLocalizationOptions));
_jsonLocalizationOptions = jsonLocalizationOptions.Get<JsonLocalizationOptions>();
_defaultRequestCulture = new RequestCulture(_jsonLocalizationOptions.DefaultCulture,
_jsonLocalizationOptions.DefaultUICulture);
_supportedCultures = _jsonLocalizationOptions.SupportedCultureInfos.ToList();
services.AddJsonLocalization(options =>
{
options.ResourcesPath = _jsonLocalizationOptions.ResourcesPath;
options.UseBaseName = _jsonLocalizationOptions.UseBaseName;
options.CacheDuration = _jsonLocalizationOptions.CacheDuration;
options.SupportedCultureInfos = _jsonLocalizationOptions.SupportedCultureInfos;
options.FileEncoding = _jsonLocalizationOptions.FileEncoding;
options.IsAbsolutePath = _jsonLocalizationOptions.IsAbsolutePath;
});
}
(关于这个项目我不能多说,但我们只是说我们必须解析某些包含双精度值的字符串等。我们在这里做的事情没有办法,只能直截了当)。
所以无论如何,如果我们无法在启动时配置它,这就是解决方案。
public static class ParseUtil
{
public static decimal ParseDecimal(string input)
{
return decimal.TryParse(input,
NumberStyles.Any,
CultureInfo.InvariantCulture,
out decimal amt) ? amt : 0;
}
public static double ParseDouble(string input)
{
return double.TryParse(input,
NumberStyles.Any,
CultureInfo.InvariantCulture,
out double amt) ? amt : 0;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.