![](/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.