diff --git a/CodeGen/Generators/UnitsNetGen/StaticQuantityGenerator.cs b/CodeGen/Generators/UnitsNetGen/StaticQuantityGenerator.cs
index 04cb812d54..f25cae0c6e 100644
--- a/CodeGen/Generators/UnitsNetGen/StaticQuantityGenerator.cs
+++ b/CodeGen/Generators/UnitsNetGen/StaticQuantityGenerator.cs
@@ -28,18 +28,18 @@ public partial class Quantity
///
/// Serves as a repository for predefined quantity conversion mappings, facilitating the automatic generation and retrieval of unit conversions in the UnitsNet library.
///
- internal static class Provider
+ internal static class DefaultProvider
{
///
/// All QuantityInfo instances that are present in UnitsNet by default.
///
- internal static IReadOnlyList DefaultQuantities => new QuantityInfo[]
- {");
+ internal static IReadOnlyList Quantities { get; } =
+ [");
foreach (var quantity in _quantities)
Writer.WL($@"
{quantity.Name}.Info,");
Writer.WL(@"
- };
+ ];
}
}");
return Writer.ToString();
diff --git a/UnitsNet/CustomCode/UnitsNetSetup.cs b/UnitsNet/CustomCode/UnitsNetSetup.cs
index cb45d2063b..ed53a93d5d 100644
--- a/UnitsNet/CustomCode/UnitsNetSetup.cs
+++ b/UnitsNet/CustomCode/UnitsNetSetup.cs
@@ -21,7 +21,8 @@ public sealed class UnitsNetSetup
{
static UnitsNetSetup()
{
- IReadOnlyCollection quantityInfos = Quantity.Provider.DefaultQuantities;
+ IReadOnlyCollection quantityInfos = Quantity.DefaultProvider.Quantities;
+
// note: in order to support the ConvertByAbbreviation, the unit converter should require a UnitParser in the constructor
var unitConverter = UnitConverter.CreateDefault();
@@ -37,7 +38,7 @@ public UnitsNetSetup(IEnumerable quantityInfos, UnitConverter unit
{
var quantityInfoLookup = new QuantityInfoLookup(quantityInfos);
var unitAbbreviations = new UnitAbbreviationsCache(quantityInfoLookup);
-
+
UnitConverter = unitConverter;
UnitAbbreviations = unitAbbreviations;
Formatter = new QuantityFormatter(unitAbbreviations);
@@ -68,7 +69,7 @@ public UnitsNetSetup(IEnumerable quantityInfos, UnitConverter unit
/// quantities.
///
public UnitAbbreviationsCache UnitAbbreviations { get; }
-
+
///
/// Converts a quantity to string using the specified format strings and culture-specific format providers.
///
diff --git a/UnitsNet/GeneratedCode/Quantity.g.cs b/UnitsNet/GeneratedCode/Quantity.g.cs
index 403d455522..ee686fea09 100644
--- a/UnitsNet/GeneratedCode/Quantity.g.cs
+++ b/UnitsNet/GeneratedCode/Quantity.g.cs
@@ -29,13 +29,13 @@ public partial class Quantity
///
/// Serves as a repository for predefined quantity conversion mappings, facilitating the automatic generation and retrieval of unit conversions in the UnitsNet library.
///
- internal static class Provider
+ internal static class DefaultProvider
{
///
/// All QuantityInfo instances that are present in UnitsNet by default.
///
- internal static IReadOnlyList DefaultQuantities => new QuantityInfo[]
- {
+ internal static IReadOnlyList Quantities { get; } =
+ [
AbsorbedDoseOfIonizingRadiation.Info,
Acceleration.Info,
AmountOfSubstance.Info,
@@ -163,6 +163,6 @@ internal static class Provider
VolumePerLength.Info,
VolumetricHeatCapacity.Info,
WarpingMomentOfInertia.Info,
- };
+ ];
}
}
diff --git a/UnitsNet/QuantityInfoLookup.cs b/UnitsNet/QuantityInfoLookup.cs
index 8a9dc0a6c2..1a8b9bb233 100644
--- a/UnitsNet/QuantityInfoLookup.cs
+++ b/UnitsNet/QuantityInfoLookup.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
+using System.Linq;
#if NET8_0_OR_GREATER
using System.Collections.Frozen;
using QuantityByTypeLookupDictionary = System.Collections.Frozen.FrozenDictionary;
@@ -80,7 +77,7 @@ private UnitByKeyLookupDictionary GroupUnitsByKey()
///
public QuantityInfoLookup(IEnumerable quantityInfos)
{
- _quantities = quantityInfos.ToArray();
+ _quantities = quantityInfos as QuantityInfo[] ?? quantityInfos.ToArray();
_quantitiesByName = new Lazy(GroupQuantitiesByName);
_quantitiesByType = new Lazy(GroupQuantitiesByType);
_quantitiesByUnitType = new Lazy(GroupQuantitiesByUnitType);
@@ -174,7 +171,7 @@ public IQuantity From(double value, UnitKey unit)
{
return GetUnitInfo(unit).From(value);
}
-
+
///
/// Attempts to create a quantity from the specified value and unit.
///
@@ -194,7 +191,7 @@ public bool TryFrom(double value, [NotNullWhen(true)] Enum? unit, [NotNullWhen(t
quantity = null;
return false;
}
-
+
if (!TryGetUnitInfo(unit, out UnitInfo? unitInfo))
{
quantity = null;
@@ -270,7 +267,7 @@ public UnitInfo GetUnitByName(string quantityName, string unitName)
Data = { ["quantityName"] = quantityName, ["unitName"] = unitName }
};
}
-
+
///
/// Attempts to parse unit information based on its quantity and unit names.
///
diff --git a/UnitsNet/UnitConverter.cs b/UnitsNet/UnitConverter.cs
index 76f7fdff17..0a9b75df11 100644
--- a/UnitsNet/UnitConverter.cs
+++ b/UnitsNet/UnitConverter.cs
@@ -85,7 +85,7 @@ public static void RegisterDefaultConversions(UnitConverter unitConverter)
if (unitConverter is null)
throw new ArgumentNullException(nameof(unitConverter));
- foreach(var quantity in Quantity.Provider.DefaultQuantities)
+ foreach (var quantity in Quantity.DefaultProvider.Quantities)
{
var registerMethod = quantity.QuantityType.GetMethod(nameof(Length.RegisterDefaultConversions), BindingFlags.NonPublic | BindingFlags.Static);
registerMethod?.Invoke(null, new object[]{unitConverter});
@@ -369,7 +369,7 @@ public static bool TryConvertByName(double inputValue, string quantityName, stri
result = quantity.As(toUnitInfo.Value);
return true;
}
-
+
result = 0d;
return false;
}