Skip to content

Commit f4e49dc

Browse files
committed
Add IsAotCompatible attribute and update incompatible code
- Add a PolyFill class to InternalHelpers to allow for usage of attributes in netstandard - Add EnumHelpers class to InternalHelpers to support a single API for different target frameworks - Update generation of RegisterDefaultConversions to not use reflection but generate necessary bindings directly - Update generations of Units to use EnumHelpers - Add generic overloads where a type is passed in a method - Annotate methods where I did not find a simple fix with RequiresDynamicCode attributes
1 parent 96f924a commit f4e49dc

File tree

270 files changed

+1163
-360
lines changed

Some content is hidden

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

270 files changed

+1163
-360
lines changed

CodeGen/Generators/UnitsNetGen/QuantityGenerator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public string Generate()
4040
using System.Globalization;
4141
using System.Linq;
4242
using System.Runtime.Serialization;
43+
using UnitsNet.InternalHelpers;
4344
using UnitsNet.Units;
4445
#if NET
4546
using System.Numerics;
@@ -156,7 +157,7 @@ private void GenerateStaticConstructor()
156157

157158
Writer.WL($@"
158159
BaseUnit = {_unitEnumName}.{_quantity.BaseUnit};
159-
Units = Enum.GetValues(typeof({_unitEnumName})).Cast<{_unitEnumName}>().ToArray();
160+
Units = EnumHelpers.GetValues<{_unitEnumName}>();
160161
Zero = new {_quantity.Name}(0, BaseUnit);
161162
Info = new QuantityInfo<{_unitEnumName}>(""{_quantity.Name}"",
162163
new UnitInfo<{_unitEnumName}>[]

CodeGen/Generators/UnitsNetGen/StaticQuantityGenerator.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,14 @@ internal static IEnumerable<Type> GetQuantityTypes()
130130
yield return typeof({quantity.Name});");
131131
Writer.WL(@"
132132
}
133+
134+
internal static void RegisterDefaultConversions(UnitConverter unitConverter)
135+
{");
136+
foreach (var quantity in _quantities)
137+
Writer.WL($@"
138+
{quantity.Name}.RegisterDefaultConversions(unitConverter);");
139+
Writer.WL(@"
140+
}
133141
}
134142
}");
135143
return Writer.ToString();

CodeGen/Generators/UnitsNetGen/UnitTestBaseClassGenerator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ public string Generate()
181181
using UnitsNet.Tests.Helpers;
182182
using UnitsNet.Tests.TestsBase;
183183
using UnitsNet.Units;
184+
using UnitsNet.InternalHelpers;
184185
using Xunit;
185186
186187
// Disable build warning CS1718: Comparison made to same variable; did you mean to compare something else?
@@ -1011,7 +1012,7 @@ public void EqualsReturnsFalseOnNull()
10111012
[Fact]
10121013
public void HasAtLeastOneAbbreviationSpecified()
10131014
{{
1014-
var units = Enum.GetValues(typeof({_unitEnumName})).Cast<{_unitEnumName}>();
1015+
var units = EnumHelpers.GetValues<{_unitEnumName}>();
10151016
foreach (var unit in units)
10161017
{{
10171018
var defaultAbbreviation = UnitsNetSetup.Default.UnitAbbreviations.GetDefaultAbbreviation(unit);

UnitsNet.Tests/GeneratedCode/TestsBase/AbsorbedDoseOfIonizingRadiationTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AccelerationTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AmountOfSubstanceTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AmplitudeRatioTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AngleTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AreaDensityTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AreaMomentOfInertiaTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AreaTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/BitRateTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/BrakeSpecificFuelConsumptionTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/CoefficientOfThermalExpansionTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/CompressibilityTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/DensityTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/DoseAreaProductTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/DurationTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/DynamicViscosityTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/ElectricAdmittanceTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/ElectricApparentEnergyTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/ElectricApparentPowerTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/ElectricCapacitanceTestsBase.g.cs

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)