Skip to content

Commit c4cab69

Browse files
authored
Obsolete GlobalConfiguration (#616)
* Obsolete GlobalConfiguration * Use Thread.CurrentThread.CurrentUICulture as backing value
1 parent e3d84e5 commit c4cab69

File tree

103 files changed

+882
-869
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+882
-869
lines changed

UnitsNet.Tests/CustomCode/StonePoundsTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void StonePoundsToString_FormatsNumberInDefaultCulture()
3535
{
3636
Mass m = Mass.FromStonePounds(3500, 1);
3737
StonePounds stonePounds = m.StonePounds;
38-
string numberInCurrentCulture = 3500.ToString("n0", GlobalConfiguration.DefaultCulture); // Varies between machines, can't hard code it
38+
string numberInCurrentCulture = 3500.ToString("n0", CultureInfo.CurrentUICulture); // Varies between machines, can't hard code it
3939

4040
Assert.Equal($"{numberInCurrentCulture} st 1 lb", stonePounds.ToString());
4141
}

UnitsNet.Tests/QuantityIConvertibleTests.cs

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Globalization;
23
using UnitsNet.Units;
34
using Xunit;
45

@@ -115,10 +116,10 @@ public void ToSingleTest()
115116
[Fact]
116117
public void ToStringTest()
117118
{
118-
string expected = length.ToString(GlobalConfiguration.DefaultCulture);
119-
Assert.Equal(expected, lengthAsIConvertible.ToString(GlobalConfiguration.DefaultCulture));
120-
Assert.Equal(expected, Convert.ToString(length, GlobalConfiguration.DefaultCulture));
121-
Assert.Equal(expected, Convert.ChangeType(length, typeof(string), GlobalConfiguration.DefaultCulture));
119+
string expected = length.ToString(CultureInfo.CurrentUICulture);
120+
Assert.Equal(expected, lengthAsIConvertible.ToString(CultureInfo.CurrentUICulture));
121+
Assert.Equal(expected, Convert.ToString(length, CultureInfo.CurrentUICulture));
122+
Assert.Equal(expected, Convert.ChangeType(length, typeof(string), CultureInfo.CurrentUICulture));
122123
}
123124

124125
[Fact]

UnitsNet.Tests/QuantityTests.ToString.cs

+12-12
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ public void CreatedByCtorWithValueAndUnit_ReturnsValueAndUnit()
6161
[Fact]
6262
public void ReturnsTheOriginalValueAndUnit()
6363
{
64-
var oldCulture = GlobalConfiguration.DefaultCulture;
64+
var oldCulture = CultureInfo.CurrentUICulture;
6565
try
6666
{
67-
GlobalConfiguration.DefaultCulture = CultureInfo.InvariantCulture;
67+
CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture;
6868
Assert.Equal("5 kg", Mass.FromKilograms(5).ToString());
6969
Assert.Equal("5,000 g", Mass.FromGrams(5000).ToString());
7070
Assert.Equal("1e-04 long tn", Mass.FromLongTons(1e-4).ToString());
@@ -77,59 +77,59 @@ public void ReturnsTheOriginalValueAndUnit()
7777
}
7878
finally
7979
{
80-
GlobalConfiguration.DefaultCulture = oldCulture;
80+
CultureInfo.CurrentUICulture = oldCulture;
8181
}
8282
}
8383

8484
[Fact]
8585
public void ConvertsToTheGivenUnit()
8686
{
87-
var oldCulture = GlobalConfiguration.DefaultCulture;
87+
var oldCulture = CultureInfo.CurrentUICulture;
8888
try
8989
{
90-
GlobalConfiguration.DefaultCulture = CultureInfo.InvariantCulture;
90+
CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture;
9191
Assert.Equal("5,000 g", Mass.FromKilograms(5).ToUnit(MassUnit.Gram).ToString());
9292
Assert.Equal("5 kg", Mass.FromGrams(5000).ToUnit(MassUnit.Kilogram).ToString());
9393
Assert.Equal("0.05 m", Length.FromCentimeters(5).ToUnit(LengthUnit.Meter).ToString());
9494
Assert.Equal("1.97 in", Length.FromCentimeters(5).ToUnit(LengthUnit.Inch).ToString());
9595
}
9696
finally
9797
{
98-
GlobalConfiguration.DefaultCulture = oldCulture;
98+
CultureInfo.CurrentUICulture = oldCulture;
9999
}
100100
}
101101

102102
[Fact]
103103
public void FormatsNumberUsingGivenCulture()
104104
{
105-
var oldCulture = GlobalConfiguration.DefaultCulture;
105+
var oldCulture = CultureInfo.CurrentUICulture;
106106
try
107107
{
108-
GlobalConfiguration.DefaultCulture = CultureInfo.InvariantCulture;
108+
CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture;
109109
Assert.Equal("0.05 m", Length.FromCentimeters(5).ToUnit(LengthUnit.Meter).ToString(null));
110110
Assert.Equal("0.05 m", Length.FromCentimeters(5).ToUnit(LengthUnit.Meter).ToString(CultureInfo.InvariantCulture));
111111
Assert.Equal("0,05 m", Length.FromCentimeters(5).ToUnit(LengthUnit.Meter).ToString(new CultureInfo("nb-NO")));
112112
}
113113
finally
114114
{
115-
GlobalConfiguration.DefaultCulture = oldCulture;
115+
CultureInfo.CurrentUICulture = oldCulture;
116116
}
117117
}
118118

119119
[Fact]
120120
public void FormatsNumberUsingGivenDigitsAfterRadix()
121121
{
122-
var oldCulture = GlobalConfiguration.DefaultCulture;
122+
var oldCulture = CultureInfo.CurrentUICulture;
123123
try
124124
{
125-
GlobalConfiguration.DefaultCulture = CultureInfo.InvariantCulture;
125+
CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture;
126126
Assert.Equal("0.05 m", Length.FromCentimeters(5).ToUnit(LengthUnit.Meter).ToString(null, 4));
127127
Assert.Equal("1.97 in", Length.FromCentimeters(5).ToUnit(LengthUnit.Inch).ToString(null, 2));
128128
Assert.Equal("1.9685 in", Length.FromCentimeters(5).ToUnit(LengthUnit.Inch).ToString(null, 4));
129129
}
130130
finally
131131
{
132-
GlobalConfiguration.DefaultCulture = oldCulture;
132+
CultureInfo.CurrentUICulture = oldCulture;
133133
}
134134
}
135135
}

UnitsNet/CustomCode/GlobalConfiguration.cs

+9-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.Globalization;
6+
using System.Threading;
67

78
// ReSharper disable once CheckNamespace
89
namespace UnitsNet
@@ -11,12 +12,17 @@ namespace UnitsNet
1112
/// Global configuration for culture, used as default culture in methods like <see cref="Length.ToString()" /> and
1213
/// <see cref="Length.Parse(string)" />.
1314
/// </summary>
15+
[Obsolete("The only property DefaultCulture is now deprecated. Manipulate Thread.CurrentThread.CurrentUICulture instead.")]
1416
public static class GlobalConfiguration
1517
{
1618
/// <summary>
17-
/// Defaults to <see cref="CultureInfo.CurrentUICulture" /> when creating an instance with no culture provided.
18-
/// Can be overridden, but note that this is static and will affect all subsequent usages.
19+
/// Wrapper for <see cref="Thread.CurrentUICulture"/>.
1920
/// </summary>
20-
public static IFormatProvider DefaultCulture { get; set; } = CultureInfo.CurrentUICulture;
21+
[Obsolete("Manipulate Thread.CurrentThread.CurrentUICulture instead, this property will be removed.")]
22+
public static IFormatProvider DefaultCulture
23+
{
24+
get => Thread.CurrentThread.CurrentUICulture;
25+
set => Thread.CurrentThread.CurrentUICulture = (CultureInfo) value;
26+
}
2127
}
2228
}

UnitsNet/CustomCode/Quantities/Length.extra.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Copyright 2013 Andreas Gullberg Larsen ([email protected]). Maintained at https://github.com/angularsen/UnitsNet.
33

44
using System;
5+
using System.Globalization;
56
using System.Text.RegularExpressions;
67
using System.Threading;
78
using JetBrains.Annotations;
@@ -207,7 +208,7 @@ public override string ToString()
207208
/// </param>
208209
public string ToString([CanBeNull] IFormatProvider cultureInfo)
209210
{
210-
cultureInfo = cultureInfo ?? GlobalConfiguration.DefaultCulture;
211+
cultureInfo = cultureInfo ?? CultureInfo.CurrentUICulture;
211212

212213
var footUnit = UnitAbbreviationsCache.Default.GetDefaultAbbreviation(LengthUnit.Foot, cultureInfo);
213214
var inchUnit = UnitAbbreviationsCache.Default.GetDefaultAbbreviation(LengthUnit.Inch, cultureInfo);

UnitsNet/CustomCode/Quantities/Mass.extra.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.Threading;
6+
using System.Globalization;
67
using JetBrains.Annotations;
78
using UnitsNet.Units;
89

@@ -124,7 +125,7 @@ public override string ToString()
124125
/// </param>
125126
public string ToString([CanBeNull] IFormatProvider cultureInfo)
126127
{
127-
cultureInfo = cultureInfo ?? GlobalConfiguration.DefaultCulture;
128+
cultureInfo = cultureInfo ?? CultureInfo.CurrentUICulture;
128129

129130
var stoneUnit = UnitAbbreviationsCache.Default.GetDefaultAbbreviation(MassUnit.Stone, cultureInfo);
130131
var poundUnit = UnitAbbreviationsCache.Default.GetDefaultAbbreviation(MassUnit.Pound, cultureInfo);

UnitsNet/CustomCode/UnitAbbreviationsCache.cs

+15-15
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private void LoadGeneratedAbbreviations()
7373
[PublicAPI]
7474
public void MapUnitToAbbreviation<TUnitType>(TUnitType unit, params string[] abbreviations) where TUnitType : Enum
7575
{
76-
MapUnitToAbbreviation(typeof(TUnitType), Convert.ToInt32(unit), GlobalConfiguration.DefaultCulture, abbreviations);
76+
MapUnitToAbbreviation(typeof(TUnitType), Convert.ToInt32(unit), CultureInfo.CurrentUICulture, abbreviations);
7777
}
7878

7979
/// <summary>
@@ -86,7 +86,7 @@ public void MapUnitToAbbreviation<TUnitType>(TUnitType unit, params string[] abb
8686
/// <typeparam name="TUnitType">The type of unit enum.</typeparam>
8787
public void MapUnitToDefaultAbbreviation<TUnitType>(TUnitType unit, string abbreviation) where TUnitType : Enum
8888
{
89-
MapUnitToDefaultAbbreviation(typeof(TUnitType), Convert.ToInt32(unit), GlobalConfiguration.DefaultCulture, abbreviation);
89+
MapUnitToDefaultAbbreviation(typeof(TUnitType), Convert.ToInt32(unit), CultureInfo.CurrentUICulture, abbreviation);
9090
}
9191

9292
/// <summary>
@@ -95,7 +95,7 @@ public void MapUnitToDefaultAbbreviation<TUnitType>(TUnitType unit, string abbre
9595
/// in order to <see cref="UnitParser.Parse{TUnitType}"/> or <see cref="GetDefaultAbbreviation{TUnitType}"/> on them later.
9696
/// </summary>
9797
/// <param name="unit">The unit enum value.</param>
98-
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
98+
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="CultureInfo.CurrentUICulture" /> if null.</param>
9999
/// <param name="abbreviations">Unit abbreviations to add.</param>
100100
/// <typeparam name="TUnitType">The type of unit enum.</typeparam>
101101
[PublicAPI]
@@ -116,7 +116,7 @@ public void MapUnitToAbbreviation<TUnitType>(TUnitType unit, IFormatProvider for
116116
/// in order to <see cref="UnitParser.Parse{TUnitType}"/> or <see cref="GetDefaultAbbreviation{TUnitType}"/> on them later.
117117
/// </summary>
118118
/// <param name="unit">The unit enum value.</param>
119-
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
119+
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="CultureInfo.CurrentUICulture" /> if null.</param>
120120
/// <param name="abbreviation">Unit abbreviation to add as default.</param>
121121
/// <typeparam name="TUnitType">The type of unit enum.</typeparam>
122122
[PublicAPI]
@@ -138,7 +138,7 @@ public void MapUnitToDefaultAbbreviation<TUnitType>(TUnitType unit, IFormatProvi
138138
/// </summary>
139139
/// <param name="unitType">The unit enum type.</param>
140140
/// <param name="unitValue">The unit enum value.</param>
141-
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
141+
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="CultureInfo.CurrentUICulture" /> if null.</param>
142142
/// <param name="abbreviations">Unit abbreviations to add.</param>
143143
[PublicAPI]
144144
public void MapUnitToAbbreviation(Type unitType, int unitValue, IFormatProvider formatProvider, [NotNull] params string[] abbreviations)
@@ -153,7 +153,7 @@ public void MapUnitToAbbreviation(Type unitType, int unitValue, IFormatProvider
153153
/// </summary>
154154
/// <param name="unitType">The unit enum type.</param>
155155
/// <param name="unitValue">The unit enum value.</param>
156-
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
156+
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="CultureInfo.CurrentUICulture" /> if null.</param>
157157
/// <param name="abbreviation">Unit abbreviation to add as default.</param>
158158
[PublicAPI]
159159
public void MapUnitToDefaultAbbreviation(Type unitType, int unitValue, IFormatProvider formatProvider, [NotNull] string abbreviation)
@@ -169,7 +169,7 @@ private void PerformAbbreviationMapping(Type unitType, int unitValue, IFormatPro
169169
if (abbreviations == null)
170170
throw new ArgumentNullException(nameof(abbreviations));
171171

172-
formatProvider = formatProvider ?? GlobalConfiguration.DefaultCulture;
172+
formatProvider = formatProvider ?? CultureInfo.CurrentUICulture;
173173

174174
if (!_lookupsForCulture.TryGetValue(formatProvider, out var quantitiesForProvider))
175175
quantitiesForProvider = _lookupsForCulture[formatProvider] = new UnitTypeToLookup();
@@ -188,7 +188,7 @@ private void PerformAbbreviationMapping(Type unitType, int unitValue, IFormatPro
188188
/// Example: GetDefaultAbbreviation&lt;LengthUnit&gt;(LengthUnit.Kilometer) => "km"
189189
/// </summary>
190190
/// <param name="unit">The unit enum value.</param>
191-
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
191+
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="CultureInfo.CurrentUICulture" /> if null.</param>
192192
/// <typeparam name="TUnitType">The type of unit enum.</typeparam>
193193
/// <returns>The default unit abbreviation string.</returns>
194194
[PublicAPI]
@@ -223,7 +223,7 @@ public string GetDefaultAbbreviation<TUnitType>(TUnitType unit, IFormatProvider
223223
/// </summary>
224224
/// <param name="unitType">The unit enum type.</param>
225225
/// <param name="unitValue">The unit enum value.</param>
226-
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
226+
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="CultureInfo.CurrentUICulture" /> if null.</param>
227227
/// <returns>The default unit abbreviation string.</returns>
228228
[PublicAPI]
229229
public string GetDefaultAbbreviation(Type unitType, int unitValue, IFormatProvider formatProvider = null)
@@ -253,7 +253,7 @@ public string GetDefaultAbbreviation(Type unitType, int unitValue, IFormatProvid
253253
/// </summary>
254254
/// <typeparam name="TUnitType">Enum type for units.</typeparam>
255255
/// <param name="unit">Enum value for unit.</param>
256-
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
256+
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="CultureInfo.CurrentUICulture" /> if null.</param>
257257
/// <returns>Unit abbreviations associated with unit.</returns>
258258
[PublicAPI]
259259
public string[] GetUnitAbbreviations<TUnitType>(TUnitType unit, IFormatProvider formatProvider = null) where TUnitType : Enum
@@ -266,12 +266,12 @@ public string[] GetUnitAbbreviations<TUnitType>(TUnitType unit, IFormatProvider
266266
/// </summary>
267267
/// <param name="unitType">Enum type for unit.</param>
268268
/// <param name="unitValue">Enum value for unit.</param>
269-
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
269+
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="CultureInfo.CurrentUICulture" /> if null.</param>
270270
/// <returns>Unit abbreviations associated with unit.</returns>
271271
[PublicAPI]
272272
public string[] GetUnitAbbreviations(Type unitType, int unitValue, IFormatProvider formatProvider = null)
273273
{
274-
formatProvider = formatProvider ?? GlobalConfiguration.DefaultCulture;
274+
formatProvider = formatProvider ?? CultureInfo.CurrentUICulture;
275275

276276
if(!TryGetUnitValueAbbreviationLookup(unitType, formatProvider, out var lookup))
277277
return formatProvider != FallbackCulture ? GetUnitAbbreviations(unitType, unitValue, FallbackCulture) : new string[] { };
@@ -287,12 +287,12 @@ public string[] GetUnitAbbreviations(Type unitType, int unitValue, IFormatProvid
287287
/// Get all abbreviations for all units of a quantity.
288288
/// </summary>
289289
/// <param name="unitEnumType">Enum type for unit.</param>
290-
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="GlobalConfiguration.DefaultCulture" /> if null.</param>
290+
/// <param name="formatProvider">The format provider to use for lookup. Defaults to <see cref="CultureInfo.CurrentUICulture" /> if null.</param>
291291
/// <returns>Unit abbreviations associated with unit.</returns>
292292
[PublicAPI]
293293
public string[] GetAllUnitAbbreviationsForQuantity(Type unitEnumType, IFormatProvider formatProvider = null)
294294
{
295-
formatProvider = formatProvider ?? GlobalConfiguration.DefaultCulture;
295+
formatProvider = formatProvider ?? CultureInfo.CurrentUICulture;
296296

297297
if(!TryGetUnitValueAbbreviationLookup(unitEnumType, formatProvider, out var lookup))
298298
return formatProvider != FallbackCulture ? GetAllUnitAbbreviationsForQuantity(unitEnumType, FallbackCulture) : new string[] { };
@@ -304,7 +304,7 @@ internal bool TryGetUnitValueAbbreviationLookup(Type unitType, IFormatProvider f
304304
{
305305
unitToAbbreviations = null;
306306

307-
formatProvider = formatProvider ?? GlobalConfiguration.DefaultCulture;
307+
formatProvider = formatProvider ?? CultureInfo.CurrentUICulture;
308308

309309
if(!_lookupsForCulture.TryGetValue(formatProvider, out var quantitiesForProvider))
310310
return formatProvider != FallbackCulture ? TryGetUnitValueAbbreviationLookup(unitType, FallbackCulture, out unitToAbbreviations) : false;

0 commit comments

Comments
 (0)