Skip to content

Conversation

angularsen
Copy link
Owner

@angularsen angularsen commented Nov 29, 2022

Merging the v5 release branch.

Although still in alpha, it is functional, nugets are published and there are not many planned breaking changes left:

By merging, all efforts moving forward are targeting v5.
This reduces several friction points:

  • No more merge conflicts trying to forward port changes to v5, instead we cherry pick new units and important changes back to v4 until v5 is fully stable.
  • Contributors are having trouble building v4 locally due to net40 and Windows Runtime Component targets.

angularsen and others added 30 commits November 1, 2021 21:05
Only a single hyphen per function name allowed.
Rename JSON field and quantity class property.
No longer needed after dropping net40 target
- MinValue
- MaxValue
- ToString overloads
To avoid floating point rounding issues, uses should use Equals() methods instead.
angularsen and others added 25 commits February 8, 2022 22:17
Should instead rename BaseUnits to SiBaseUnits to distinguish them.
Co-authored-by: Andreas Leeb <[email protected]>

Fixes #875 

Regarding #875 (reply in thread) a PR draft for #875 (comment)

Size comparison
```
Before: Marshal.SizeOf<QuantityValue>(): 40 B
After:  Marshal.SizeOf<QuantityValue>(): 16 B
```

`UnderlyingDataType` could support up to 256 different enum values, I guess we won't ever need more different underlying types that can fit into this struct 😄
# Conflicts:
#	CodeGen/Generators/NanoFrameworkGen/NuspecGenerator.cs
#	UnitsNet.NanoFramework/GeneratedCode/Acceleration/UnitsNet.NanoFramework.Acceleration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/AmountOfSubstance/UnitsNet.NanoFramework.AmountOfSubstance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/AmplitudeRatio/UnitsNet.NanoFramework.AmplitudeRatio.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Angle/UnitsNet.NanoFramework.Angle.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ApparentEnergy/UnitsNet.NanoFramework.ApparentEnergy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ApparentPower/UnitsNet.NanoFramework.ApparentPower.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Area/UnitsNet.NanoFramework.Area.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/AreaDensity/UnitsNet.NanoFramework.AreaDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/AreaMomentOfInertia/UnitsNet.NanoFramework.AreaMomentOfInertia.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/BitRate/UnitsNet.NanoFramework.BitRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/BrakeSpecificFuelConsumption/UnitsNet.NanoFramework.BrakeSpecificFuelConsumption.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Capacitance/UnitsNet.NanoFramework.Capacitance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/CoefficientOfThermalExpansion/UnitsNet.NanoFramework.CoefficientOfThermalExpansion.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Density/UnitsNet.NanoFramework.Density.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Duration/UnitsNet.NanoFramework.Duration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/DynamicViscosity/UnitsNet.NanoFramework.DynamicViscosity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricAdmittance/UnitsNet.NanoFramework.ElectricAdmittance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricCharge/UnitsNet.NanoFramework.ElectricCharge.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricChargeDensity/UnitsNet.NanoFramework.ElectricChargeDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricConductance/UnitsNet.NanoFramework.ElectricConductance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricConductivity/UnitsNet.NanoFramework.ElectricConductivity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricCurrent/UnitsNet.NanoFramework.ElectricCurrent.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricCurrentDensity/UnitsNet.NanoFramework.ElectricCurrentDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricCurrentGradient/UnitsNet.NanoFramework.ElectricCurrentGradient.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricField/UnitsNet.NanoFramework.ElectricField.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricInductance/UnitsNet.NanoFramework.ElectricInductance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricPotential/UnitsNet.NanoFramework.ElectricPotential.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialAc/UnitsNet.NanoFramework.ElectricPotentialAc.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialChangeRate/UnitsNet.NanoFramework.ElectricPotentialChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialDc/UnitsNet.NanoFramework.ElectricPotentialDc.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricResistance/UnitsNet.NanoFramework.ElectricResistance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricResistivity/UnitsNet.NanoFramework.ElectricResistivity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricSurfaceChargeDensity/UnitsNet.NanoFramework.ElectricSurfaceChargeDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Energy/UnitsNet.NanoFramework.Energy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Entropy/UnitsNet.NanoFramework.Entropy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Force/UnitsNet.NanoFramework.Force.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ForceChangeRate/UnitsNet.NanoFramework.ForceChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ForcePerLength/UnitsNet.NanoFramework.ForcePerLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Frequency/UnitsNet.NanoFramework.Frequency.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/FuelEfficiency/UnitsNet.NanoFramework.FuelEfficiency.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/HeatFlux/UnitsNet.NanoFramework.HeatFlux.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/HeatTransferCoefficient/UnitsNet.NanoFramework.HeatTransferCoefficient.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Illuminance/UnitsNet.NanoFramework.Illuminance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Information/UnitsNet.NanoFramework.Information.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Irradiance/UnitsNet.NanoFramework.Irradiance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Irradiation/UnitsNet.NanoFramework.Irradiation.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/KinematicViscosity/UnitsNet.NanoFramework.KinematicViscosity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LapseRate/UnitsNet.NanoFramework.LapseRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Length/UnitsNet.NanoFramework.Length.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Level/UnitsNet.NanoFramework.Level.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LinearDensity/UnitsNet.NanoFramework.LinearDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LinearPowerDensity/UnitsNet.NanoFramework.LinearPowerDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Luminosity/UnitsNet.NanoFramework.Luminosity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LuminousFlux/UnitsNet.NanoFramework.LuminousFlux.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LuminousIntensity/UnitsNet.NanoFramework.LuminousIntensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MagneticField/UnitsNet.NanoFramework.MagneticField.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MagneticFlux/UnitsNet.NanoFramework.MagneticFlux.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Magnetization/UnitsNet.NanoFramework.Magnetization.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Mass/UnitsNet.NanoFramework.Mass.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassConcentration/UnitsNet.NanoFramework.MassConcentration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassFlow/UnitsNet.NanoFramework.MassFlow.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassFlux/UnitsNet.NanoFramework.MassFlux.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassFraction/UnitsNet.NanoFramework.MassFraction.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassMomentOfInertia/UnitsNet.NanoFramework.MassMomentOfInertia.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MolarEnergy/UnitsNet.NanoFramework.MolarEnergy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MolarEntropy/UnitsNet.NanoFramework.MolarEntropy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MolarMass/UnitsNet.NanoFramework.MolarMass.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Molarity/UnitsNet.NanoFramework.Molarity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Permeability/UnitsNet.NanoFramework.Permeability.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Permittivity/UnitsNet.NanoFramework.Permittivity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Power/UnitsNet.NanoFramework.Power.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/PowerDensity/UnitsNet.NanoFramework.PowerDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/PowerRatio/UnitsNet.NanoFramework.PowerRatio.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Pressure/UnitsNet.NanoFramework.Pressure.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/PressureChangeRate/UnitsNet.NanoFramework.PressureChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Properties/AssemblyInfo.cs
#	UnitsNet.NanoFramework/GeneratedCode/Quantities/Length.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Quantities/Power.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Quantities/Pressure.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Quantities/SpecificEnergy.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Ratio/UnitsNet.NanoFramework.Ratio.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RatioChangeRate/UnitsNet.NanoFramework.RatioChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ReactiveEnergy/UnitsNet.NanoFramework.ReactiveEnergy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ReactivePower/UnitsNet.NanoFramework.ReactivePower.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/UnitsNet.NanoFramework.ReciprocalArea.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ReciprocalLength/UnitsNet.NanoFramework.ReciprocalLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RelativeHumidity/UnitsNet.NanoFramework.RelativeHumidity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RotationalAcceleration/UnitsNet.NanoFramework.RotationalAcceleration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RotationalSpeed/UnitsNet.NanoFramework.RotationalSpeed.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RotationalStiffness/UnitsNet.NanoFramework.RotationalStiffness.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RotationalStiffnessPerLength/UnitsNet.NanoFramework.RotationalStiffnessPerLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Scalar/UnitsNet.NanoFramework.Scalar.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SolidAngle/UnitsNet.NanoFramework.SolidAngle.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificEnergy/UnitsNet.NanoFramework.SpecificEnergy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificEntropy/UnitsNet.NanoFramework.SpecificEntropy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificFuelConsumption/UnitsNet.NanoFramework.SpecificFuelConsumption.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificVolume/UnitsNet.NanoFramework.SpecificVolume.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificWeight/UnitsNet.NanoFramework.SpecificWeight.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Speed/UnitsNet.NanoFramework.Speed.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/StandardVolumeFlow/UnitsNet.NanoFramework.StandardVolumeFlow.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Temperature/UnitsNet.NanoFramework.Temperature.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/TemperatureChangeRate/UnitsNet.NanoFramework.TemperatureChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/TemperatureDelta/UnitsNet.NanoFramework.TemperatureDelta.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/TemperatureGradient/UnitsNet.NanoFramework.TemperatureGradient.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ThermalConductivity/UnitsNet.NanoFramework.ThermalConductivity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ThermalResistance/UnitsNet.NanoFramework.ThermalResistance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Torque/UnitsNet.NanoFramework.Torque.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/TorquePerLength/UnitsNet.NanoFramework.TorquePerLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Turbidity/UnitsNet.NanoFramework.Turbidity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VitaminA/UnitsNet.NanoFramework.VitaminA.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Volume/UnitsNet.NanoFramework.Volume.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumeConcentration/UnitsNet.NanoFramework.VolumeConcentration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumeFlow/UnitsNet.NanoFramework.VolumeFlow.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumeFlowPerArea/UnitsNet.NanoFramework.VolumeFlowPerArea.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumePerLength/UnitsNet.NanoFramework.VolumePerLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumetricHeatCapacity/UnitsNet.NanoFramework.VolumetricHeatCapacity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/WarpingMomentOfInertia/UnitsNet.NanoFramework.WarpingMomentOfInertia.nuspec
#	UnitsNet.NumberExtensions/UnitsNet.NumberExtensions.csproj
#	UnitsNet.Tests/GeneratedCode/IQuantityTests.g.cs
#	UnitsNet.Tests/UnitsNet.Tests.csproj
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Length.g.cs
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Power.g.cs
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Pressure.g.cs
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/SpecificEnergy.g.cs
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantity.g.cs
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/QuantityType.g.cs
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Units/LengthUnit.g.cs
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Units/PowerUnit.g.cs
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Units/PressureUnit.g.cs
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Units/SpecificEnergyUnit.g.cs
#	UnitsNet.WindowsRuntimeComponent/Properties/AssemblyInfo.cs
#	UnitsNet.WindowsRuntimeComponent/UnitsNet.WindowsRuntimeComponent.nuspec
#	UnitsNet/GeneratedCode/Quantity.g.cs
#	UnitsNet/QuantityTypeConverter.cs
#	UnitsNet/UnitsNet.csproj
#	appveyor.yml
* Switch nanoFramework build to x64

* Migrate nanoFramework projects and generator to VS2022 style
# Conflicts:
#	UnitsNet.NanoFramework/GeneratedCode/Units/AccelerationUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/AmountOfSubstanceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/AmplitudeRatioUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/AngleUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ApparentEnergyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ApparentPowerUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/AreaDensityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/AreaMomentOfInertiaUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/AreaUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/BitRateUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/BrakeSpecificFuelConsumptionUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/CapacitanceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/CoefficientOfThermalExpansionUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/CompressibilityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/DensityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/DurationUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/DynamicViscosityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricAdmittanceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricChargeDensityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricChargeUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricConductanceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricConductivityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricCurrentDensityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricCurrentGradientUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricCurrentUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricFieldUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricInductanceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricPotentialAcUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricPotentialChangeRateUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricPotentialDcUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricPotentialUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricResistanceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricResistivityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ElectricSurfaceChargeDensityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/EnergyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/EntropyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ForceChangeRateUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ForcePerLengthUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ForceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/FrequencyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/FuelEfficiencyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/HeatFluxUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/HeatTransferCoefficientUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/IlluminanceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/InformationUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/IrradianceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/IrradiationUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/JerkUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/KinematicViscosityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/LapseRateUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/LevelUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/LinearDensityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/LinearPowerDensityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/LuminosityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/LuminousFluxUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/LuminousIntensityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MagneticFieldUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MagneticFluxUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MagnetizationUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MassConcentrationUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MassFlowUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MassFluxUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MassFractionUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MassMomentOfInertiaUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MassUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MolarEnergyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MolarEntropyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MolarMassUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/MolarityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/PermeabilityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/PermittivityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/PorousMediumPermeabilityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/PowerDensityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/PowerRatioUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/PowerUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/PressureChangeRateUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/PressureUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/RatioChangeRateUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/RatioUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ReactiveEnergyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ReactivePowerUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ReciprocalAreaUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ReciprocalLengthUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/RelativeHumidityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/RotationalAccelerationUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/RotationalSpeedUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/RotationalStiffnessPerLengthUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/RotationalStiffnessUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ScalarUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/SolidAngleUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/SpecificEnergyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/SpecificEntropyUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/SpecificFuelConsumptionUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/SpecificVolumeUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/SpecificWeightUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/SpeedUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/StandardVolumeFlowUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/TemperatureChangeRateUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/TemperatureDeltaUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/TemperatureGradientUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/TemperatureUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ThermalConductivityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/ThermalResistanceUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/TorquePerLengthUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/TorqueUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/TurbidityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/VitaminAUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/VolumeConcentrationUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/VolumeFlowPerAreaUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/VolumeFlowUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/VolumePerLengthUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/VolumeUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/VolumetricHeatCapacityUnit.g.cs
#	UnitsNet.NanoFramework/GeneratedCode/Units/WarpingMomentOfInertiaUnit.g.cs
#	UnitsNet/GeneratedCode/Units/AccelerationUnit.g.cs
#	UnitsNet/GeneratedCode/Units/AmountOfSubstanceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/AmplitudeRatioUnit.g.cs
#	UnitsNet/GeneratedCode/Units/AngleUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ApparentEnergyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ApparentPowerUnit.g.cs
#	UnitsNet/GeneratedCode/Units/AreaDensityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/AreaMomentOfInertiaUnit.g.cs
#	UnitsNet/GeneratedCode/Units/AreaUnit.g.cs
#	UnitsNet/GeneratedCode/Units/BitRateUnit.g.cs
#	UnitsNet/GeneratedCode/Units/BrakeSpecificFuelConsumptionUnit.g.cs
#	UnitsNet/GeneratedCode/Units/CapacitanceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/CoefficientOfThermalExpansionUnit.g.cs
#	UnitsNet/GeneratedCode/Units/CompressibilityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/DensityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/DurationUnit.g.cs
#	UnitsNet/GeneratedCode/Units/DynamicViscosityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricAdmittanceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricChargeDensityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricChargeUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricConductanceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricConductivityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricCurrentDensityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricCurrentGradientUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricCurrentUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricFieldUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricInductanceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricPotentialAcUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricPotentialChangeRateUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricPotentialDcUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricPotentialUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricResistanceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricResistivityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ElectricSurfaceChargeDensityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/EnergyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/EntropyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ForceChangeRateUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ForcePerLengthUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ForceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/FrequencyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/FuelEfficiencyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/HeatFluxUnit.g.cs
#	UnitsNet/GeneratedCode/Units/HeatTransferCoefficientUnit.g.cs
#	UnitsNet/GeneratedCode/Units/IlluminanceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/InformationUnit.g.cs
#	UnitsNet/GeneratedCode/Units/IrradianceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/IrradiationUnit.g.cs
#	UnitsNet/GeneratedCode/Units/JerkUnit.g.cs
#	UnitsNet/GeneratedCode/Units/KinematicViscosityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/LapseRateUnit.g.cs
#	UnitsNet/GeneratedCode/Units/LevelUnit.g.cs
#	UnitsNet/GeneratedCode/Units/LinearDensityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/LinearPowerDensityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/LuminosityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/LuminousFluxUnit.g.cs
#	UnitsNet/GeneratedCode/Units/LuminousIntensityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MagneticFieldUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MagneticFluxUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MagnetizationUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MassConcentrationUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MassFlowUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MassFluxUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MassFractionUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MassMomentOfInertiaUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MassUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MolarEnergyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MolarEntropyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MolarMassUnit.g.cs
#	UnitsNet/GeneratedCode/Units/MolarityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/PermeabilityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/PermittivityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/PorousMediumPermeabilityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/PowerDensityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/PowerRatioUnit.g.cs
#	UnitsNet/GeneratedCode/Units/PowerUnit.g.cs
#	UnitsNet/GeneratedCode/Units/PressureChangeRateUnit.g.cs
#	UnitsNet/GeneratedCode/Units/PressureUnit.g.cs
#	UnitsNet/GeneratedCode/Units/RatioChangeRateUnit.g.cs
#	UnitsNet/GeneratedCode/Units/RatioUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ReactiveEnergyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ReactivePowerUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ReciprocalAreaUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ReciprocalLengthUnit.g.cs
#	UnitsNet/GeneratedCode/Units/RelativeHumidityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/RotationalAccelerationUnit.g.cs
#	UnitsNet/GeneratedCode/Units/RotationalSpeedUnit.g.cs
#	UnitsNet/GeneratedCode/Units/RotationalStiffnessPerLengthUnit.g.cs
#	UnitsNet/GeneratedCode/Units/RotationalStiffnessUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ScalarUnit.g.cs
#	UnitsNet/GeneratedCode/Units/SolidAngleUnit.g.cs
#	UnitsNet/GeneratedCode/Units/SpecificEnergyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/SpecificEntropyUnit.g.cs
#	UnitsNet/GeneratedCode/Units/SpecificFuelConsumptionUnit.g.cs
#	UnitsNet/GeneratedCode/Units/SpecificVolumeUnit.g.cs
#	UnitsNet/GeneratedCode/Units/SpecificWeightUnit.g.cs
#	UnitsNet/GeneratedCode/Units/SpeedUnit.g.cs
#	UnitsNet/GeneratedCode/Units/StandardVolumeFlowUnit.g.cs
#	UnitsNet/GeneratedCode/Units/TemperatureChangeRateUnit.g.cs
#	UnitsNet/GeneratedCode/Units/TemperatureDeltaUnit.g.cs
#	UnitsNet/GeneratedCode/Units/TemperatureGradientUnit.g.cs
#	UnitsNet/GeneratedCode/Units/TemperatureUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ThermalConductivityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/ThermalResistanceUnit.g.cs
#	UnitsNet/GeneratedCode/Units/TorquePerLengthUnit.g.cs
#	UnitsNet/GeneratedCode/Units/TorqueUnit.g.cs
#	UnitsNet/GeneratedCode/Units/TurbidityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/VitaminAUnit.g.cs
#	UnitsNet/GeneratedCode/Units/VolumeConcentrationUnit.g.cs
#	UnitsNet/GeneratedCode/Units/VolumeFlowPerAreaUnit.g.cs
#	UnitsNet/GeneratedCode/Units/VolumeFlowUnit.g.cs
#	UnitsNet/GeneratedCode/Units/VolumePerLengthUnit.g.cs
#	UnitsNet/GeneratedCode/Units/VolumeUnit.g.cs
#	UnitsNet/GeneratedCode/Units/VolumetricHeatCapacityUnit.g.cs
#	UnitsNet/GeneratedCode/Units/WarpingMomentOfInertiaUnit.g.cs
# Conflicts:
#	UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Compressibility.g.cs
#	UnitsNet.WindowsRuntimeComponent/Properties/AssemblyInfo.cs
#	UnitsNet.WindowsRuntimeComponent/UnitsNet.WindowsRuntimeComponent.nuspec
There is no unit with enum value 0 anymore. In v4, this was Undefined.
- QuantityValue implements most of the INumber interface members / operators (operations  preserving decimal when possible, failing back to double, clamped to the real values- infinities excluded)
- changed the type of IQuantity.Value/As to QuantityValue (explicit cast required)
- added back the IEquatable interface: behavior depending on the runtime type of the quantity values (strict equality comparison for double/double)
- added back the fix for the non-reflexive CompareTo issue (and the corresponding tests)
- added a check preventing the possible stack overflow exception when calling ToUnit() with default(TUnit) (or any other invalid Enum value)
- DataContracts changed to reflect the possible use of either double or decimal as ValueType (the Json converters were not changed- but probably should be)
- removed the obsolete Json converter tests
The converter it tested no longer exists.
Fixes #1058 

Return the correct value type for quantities that use `decimal` internally; `Power, Information, BitRate`.

- Quantity properties return `decimal` or `double` based on internal value type.
- `IQuantity.Value` returns `QuantityValue`, which supports both double and decimal.
- `QuantityValue`: Implement IEquality<QuantityValue>, IComparable<QuantityValue>, IComparable.

Co-authored-by: Andreas Gullberg Larsen <[email protected]>
@angularsen angularsen mentioned this pull request Nov 29, 2022
@angularsen angularsen closed this Nov 29, 2022
@angularsen
Copy link
Owner Author

I forgot there was already #982 for merging this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants