extension method for parsing doubles

This commit is contained in:
Stoyan Zlatev
2023-10-12 12:42:03 +02:00
parent eadd0f0475
commit 4cce4e6a0c
3 changed files with 37 additions and 14 deletions
@@ -430,6 +430,7 @@
</Compile>
<Compile Include="Infrastructure\ADLoginModel.cs" />
<Compile Include="Infrastructure\Appsettings.cs" />
<Compile Include="Infrastructure\ParseExtensions.cs" />
<Compile Include="Infrastructure\Software.cs" />
<Compile Include="Infrastructure\SoftwareUser.cs" />
<Compile Include="Infrastructure\SoftwareVersion.cs" />
@@ -0,0 +1,27 @@
namespace Xylem.Common.Ui.GenesisToolBox.Infrastructure
{
using System.Globalization;
using System.Threading;
internal static class ParseExtensions
{
private static readonly NumberStyles any = NumberStyles.Any;
private static readonly CultureInfo de = new CultureInfo("de-DE");
private static readonly CultureInfo us = new CultureInfo("en-US");
private static bool IsDECulture => Thread.CurrentThread.CurrentCulture.Name.ToLower().Contains("de");
internal static bool TryParse(this string stringValue, out double value)
{
if (IsDECulture)
{
return double.TryParse(stringValue, any, de, out value)
|| double.TryParse(stringValue, any, us, out value);
}
else
{
return double.TryParse(stringValue, any, us, out value)
|| double.TryParse(stringValue, any, de, out value);
}
}
}
}
@@ -88,15 +88,12 @@
private const string MESSUREMENTS_FILE = @"_messurements.txt";
private const string AGGREGATIONS_FILE = @"_aggregations.txt";
private const string BACKWARDS_FILE = @"_backwards.txt";
private const NumberStyles ANY = NumberStyles.Any;
private readonly string pcbId;
private readonly string messurementsFile;
private readonly string aggregationsFile;
private readonly string backwardsFile;
private readonly ITempMeterForm tempMeterForm;
private readonly CultureInfo en;
private readonly CultureInfo de;
private TemperatureSource temperatureSource;
private Timer longTimer;
@@ -117,8 +114,6 @@
}
this.temperatureSource = new TemperatureSource();
this.en = new CultureInfo("en-US");
this.de = new CultureInfo("de-DE");
}
public void StartMessuring()
@@ -266,8 +261,8 @@
try
{
var tParsed = double.TryParse(tString, ANY, this.en, out currentT) || double.TryParse(tString, ANY, this.de, out currentT);
var tofParsed = double.TryParse(tofString, ANY, this.en, out currentTOF) || double.TryParse(tofString, ANY, this.de, out currentTOF);
var tParsed = tString.TryParse(out currentT);
var tofParsed = tofString.TryParse(out currentTOF);
if (!tParsed || !tofParsed)
{
@@ -336,11 +331,11 @@
var seconds = default(int);
var pcbParsed = int.TryParse(pcbString, out pcbId);
var tParsed = double.TryParse(avgTString, ANY, this.en, out avgT) || double.TryParse(avgTString, ANY, this.de, out avgT);
var dtParsed = double.TryParse(difTString, ANY, this.en, out difT) || double.TryParse(difTString, ANY, this.de, out difT);
var secParsed = int.TryParse(secondsString, ANY, this.en, out seconds) || int.TryParse(secondsString, ANY, this.de, out seconds);
var tofParsed = double.TryParse(avgTOFString, ANY, this.en, out avgTOF) || double.TryParse(avgTOFString, ANY, this.de, out avgTOF);
var dtofParsed = double.TryParse(difTOFString, ANY, this.en, out difTOF) || double.TryParse(difTOFString, ANY, this.de, out difTOF);
var tParsed = avgTString.TryParse(out avgT);
var dtParsed = difTString.TryParse(out difT);
var secParsed = int.TryParse(secondsString, out seconds) || int.TryParse(secondsString, out seconds);
var tofParsed = avgTOFString.TryParse(out avgTOF);
var dtofParsed = difTOFString.TryParse(out difTOF);
if (!pcbParsed || !tParsed || !tofParsed || !dtParsed || !dtofParsed)
{
@@ -611,8 +606,8 @@
var avgTOF = default(double);
var pcbParsed = int.TryParse(pcbString, out pcbId);
var tParsed = double.TryParse(avgTString, ANY, this.en, out avgT) || double.TryParse(avgTString, ANY, this.de, out avgT);
var tofParsed = double.TryParse(avgTOFString, ANY, this.en, out avgTOF) || double.TryParse(avgTOFString, ANY, this.de, out avgTOF);
var tParsed = avgTString.TryParse(out avgT);
var tofParsed = avgTOFString.TryParse(out avgTOF);
if (!pcbParsed || !tParsed || !tofParsed)
{