Specify CultureInfo when converting types

This commit is contained in:
Oliver Booth 2022-11-30 17:56:02 +00:00
parent 3abd7b1379
commit 656a0b287d
No known key found for this signature in database
GPG Key ID: 32A00B35503AF634
6 changed files with 20 additions and 15 deletions

View File

@ -1,4 +1,5 @@
using System.Drawing;
using System.Drawing;
using System.Globalization;
using System.Reflection;
using System.Text;
using Cysharp.Text;
@ -288,7 +289,7 @@ public sealed class VirtualParadiseParticleEmitterObject : VirtualParadiseObject
}
else if (property.PropertyType != typeof(string))
{
value = Convert.ChangeType(value, property.PropertyType);
value = Convert.ChangeType(value, property.PropertyType, CultureInfo.InvariantCulture);
}
property.SetValue(this, value);

View File

@ -1,4 +1,5 @@
using System.Numerics;
using System.Globalization;
using System.Numerics;
using System.Text;
using Cysharp.Text;
using VpSharp.Extensions;
@ -81,8 +82,8 @@ public sealed class VirtualParadisePathObject : VirtualParadiseObject
int spaceIndex = chars[index..].IndexOf(' ');
int newLineIndex = chars[index..].IndexOf('\n');
int pathType = int.Parse(chars[index..(index + spaceIndex)]);
int closed = int.Parse(chars[(index + spaceIndex + 1)..(index + newLineIndex)]);
int pathType = int.Parse(chars[index..(index + spaceIndex)], provider: CultureInfo.InvariantCulture);
int closed = int.Parse(chars[(index + spaceIndex + 1)..(index + newLineIndex)], provider: CultureInfo.InvariantCulture);
index += newLineIndex;
// points from here onwards

View File

@ -1,3 +1,4 @@
using System.Globalization;
using System.Numerics;
using System.Text;
using Cysharp.Text;
@ -10,21 +11,21 @@ internal static class SpanExtensions
{
Span<char> chars = stackalloc char[value.Length];
Encoding.UTF8.GetChars(value, chars);
return double.Parse(chars.Trim());
return double.Parse(chars.Trim(), provider: CultureInfo.InvariantCulture);
}
public static int ToInt32(this ReadOnlySpan<byte> value)
{
Span<char> chars = stackalloc char[value.Length];
Encoding.UTF8.GetChars(value, chars);
return int.Parse(chars.Trim());
return int.Parse(chars.Trim(), provider: CultureInfo.InvariantCulture);
}
public static float ToSingle(this ReadOnlySpan<byte> value)
{
Span<char> chars = stackalloc char[value.Length];
Encoding.UTF8.GetChars(value, chars);
return float.Parse(chars.Trim());
return float.Parse(chars.Trim(), provider: CultureInfo.InvariantCulture);
}
public static Vector2 ToVector2(this ReadOnlySpan<byte> value)

View File

@ -13,13 +13,13 @@ internal sealed class HexToColorConverter : ValueConverter<Color>
Span<char> buffer = stackalloc char[2];
reader.Read(buffer);
int r = int.Parse(buffer, NumberStyles.HexNumber);
int r = int.Parse(buffer, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
reader.Read(buffer);
int g = int.Parse(buffer, NumberStyles.HexNumber);
int g = int.Parse(buffer, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
reader.Read(buffer);
int b = int.Parse(buffer, NumberStyles.HexNumber);
int b = int.Parse(buffer, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
result = Color.FromArgb(r, g, b);
}

View File

@ -1,3 +1,5 @@
using System.Globalization;
namespace VpSharp.Internal.ValueConverters;
#pragma warning disable CA1812
@ -8,13 +10,13 @@ internal sealed class IntToEnumConverter<T> : ValueConverter<T>
/// <inheritdoc />
public override void Deserialize(TextReader reader, out T result)
{
int value = int.Parse(reader.ReadToEnd());
result = (T)Convert.ChangeType(value, typeof(T));
int value = int.Parse(reader.ReadToEnd(), provider: CultureInfo.InvariantCulture);
result = (T)Convert.ChangeType(value, typeof(T), CultureInfo.InvariantCulture);
}
/// <inheritdoc />
public override void Serialize(TextWriter writer, T value)
{
writer.Write(Convert.ToInt32(value));
writer.Write(Convert.ToInt32(value, CultureInfo.InvariantCulture));
}
}

View File

@ -128,7 +128,7 @@ internal static class WorldSettingsConverter
}
else if (propertyType.IsEnum && int.TryParse(value, out int result))
{
propertyValue = Convert.ChangeType(result, propertyType);
propertyValue = Convert.ChangeType(result, propertyType, CultureInfo.InvariantCulture);
}
}