diff --git a/Common/UnitDefinitions/AreaPerLength.json b/Common/UnitDefinitions/AreaPerLength.json
new file mode 100644
index 0000000000..25960b59c6
--- /dev/null
+++ b/Common/UnitDefinitions/AreaPerLength.json
@@ -0,0 +1,85 @@
+{
+ "Name": "AreaPerLength",
+ "BaseUnit": "SquareMeterPerMeter",
+ "XmlDocSummary": "The magnitude of area per unit length, typically used in structural engineering to specify distributed reinforcement.",
+ "BaseDimensions": {
+ "L": 1
+ },
+ "Units": [
+ {
+ "SingularName": "SquareMeterPerMeter",
+ "PluralName": "SquareMetersPerMeter",
+ "BaseUnits": {
+ "L": "Meter"
+ },
+ "FromUnitToBaseFunc": "{x}",
+ "FromBaseToUnitFunc": "{x}",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "m²/m" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "SquareCentimeterPerMeter",
+ "PluralName": "SquareCentimetersPerMeter",
+ "FromUnitToBaseFunc": "{x} * 1e-4",
+ "FromBaseToUnitFunc": "{x} / 1e-4",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "cm²/m" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "SquareMillimeterPerMeter",
+ "PluralName": "SquareMillimetersPerMeter",
+ "FromUnitToBaseFunc": "{x} * 1e-6",
+ "FromBaseToUnitFunc": "{x} / 1e-6",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "mm²/m" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "SquareInchPerFoot",
+ "PluralName": "SquareInchesPerFoot",
+ "FromUnitToBaseFunc": "{x} * 0.00064516 / 0.3048",
+ "FromBaseToUnitFunc": "{x} * 0.3048 / 0.00064516",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "in²/ft" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "SquareInchPerInch",
+ "PluralName": "SquareInchesPerInch",
+ "FromUnitToBaseFunc": "{x} * 0.00064516 / 0.0254",
+ "FromBaseToUnitFunc": "{x} * 0.0254 / 0.00064516",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "in²/in" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "SquareFootPerFoot",
+ "PluralName": "SquareFeetPerFoot",
+ "FromUnitToBaseFunc": "{x} * 0.09290304 / 0.3048",
+ "FromBaseToUnitFunc": "{x} * 0.3048 / 0.09290304",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "ft²/ft" ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Common/UnitEnumValues.g.json b/Common/UnitEnumValues.g.json
index 3ebdc3d87d..da948a3edf 100644
--- a/Common/UnitEnumValues.g.json
+++ b/Common/UnitEnumValues.g.json
@@ -2018,5 +2018,13 @@
"SquareMeterKelvinPerKilowatt": 5,
"SquareMeterKelvinPerWatt": 4,
"SquareMillimeterKelvinPerWatt": 13
+ },
+ "AreaPerLength": {
+ "SquareCentimeterPerMeter": 10,
+ "SquareFootPerFoot": 4,
+ "SquareInchPerFoot": 3,
+ "SquareInchPerInch": 7,
+ "SquareMeterPerMeter": 1,
+ "SquareMillimeterPerMeter": 5
}
}
diff --git a/UnitsNet.NanoFramework/GeneratedCode/AreaPerLength/AreaPerLength.nfproj b/UnitsNet.NanoFramework/GeneratedCode/AreaPerLength/AreaPerLength.nfproj
new file mode 100644
index 0000000000..70445a6766
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/AreaPerLength/AreaPerLength.nfproj
@@ -0,0 +1,42 @@
+
+
+
+ $(MSBuildExtensionsPath)\nanoFramework\v1.0\
+
+
+
+ Debug
+ AnyCPU
+ {11A8DD76-328B-46DF-9F39-F559912D0360};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ {99bce9bf-d162-d7b5-a3f8-ea77e4f194c3}
+ Library
+ Properties
+ 512
+ UnitsNet
+ UnitsNet.AreaPerLength
+ v1.0
+ bin\$(Configuration)\$(AssemblyName).xml
+
+
+
+
+
+
+
+
+
+ ..\packages\nanoFramework.CoreLibrary.1.15.5\lib\mscorlib.dll
+ True
+ True
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/UnitsNet.NanoFramework/GeneratedCode/AreaPerLength/UnitsNet.NanoFramework.AreaPerLength.nuspec b/UnitsNet.NanoFramework/GeneratedCode/AreaPerLength/UnitsNet.NanoFramework.AreaPerLength.nuspec
new file mode 100644
index 0000000000..186c41f8c0
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/AreaPerLength/UnitsNet.NanoFramework.AreaPerLength.nuspec
@@ -0,0 +1,26 @@
+
+
+
+ UnitsNet.nanoFramework.AreaPerLength
+ 6.0.0-pre019
+ Units.NET AreaPerLength - nanoFramework
+ Andreas Gullberg Larsen,nanoframework
+ UnitsNet
+ MIT-0
+ https://github.com/angularsen/UnitsNet
+ false
+ Adds AreaPerLength units for Units.NET on .NET nanoFramework. For .NET or .NET Core, use UnitsNet instead.
+ https://raw.githubusercontent.com/angularsen/UnitsNet/ce85185429be345d77eb2ce09c99d59cc9ab8aed/Docs/Images/logo-32.png
+
+
+ Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com).
+ en-US
+ nanoframework areaperlength unit units quantity quantities measurement si metric imperial abbreviation abbreviations convert conversion parse immutable
+
+
+
+
+
+
+
+
diff --git a/UnitsNet.NanoFramework/GeneratedCode/AreaPerLength/packages.config b/UnitsNet.NanoFramework/GeneratedCode/AreaPerLength/packages.config
new file mode 100644
index 0000000000..313a8dccdf
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/AreaPerLength/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/UnitsNet.NanoFramework/GeneratedCode/Quantities/AreaPerLength.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Quantities/AreaPerLength.g.cs
new file mode 100644
index 0000000000..4d3d95c0a7
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/Quantities/AreaPerLength.g.cs
@@ -0,0 +1,217 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using System;
+using UnitsNet.Units;
+
+namespace UnitsNet
+{
+ ///
+ ///
+ /// The magnitude of area per unit length, typically used in structural engineering to specify distributed reinforcement.
+ ///
+ public struct AreaPerLength
+ {
+ ///
+ /// The numeric value this quantity was constructed with.
+ ///
+ private readonly double _value;
+
+ ///
+ /// The unit this quantity was constructed with.
+ ///
+ private readonly AreaPerLengthUnit _unit;
+
+ ///
+ /// The numeric value this quantity was constructed with.
+ ///
+ public double Value => _value;
+
+ ///
+ public AreaPerLengthUnit Unit => _unit;
+
+ ///
+ /// Creates the quantity with the given numeric value and unit.
+ ///
+ /// The numeric value to construct this quantity with.
+ /// The unit representation to construct this quantity with.
+ public AreaPerLength(double value, AreaPerLengthUnit unit)
+ {
+ _value = value;
+ _unit = unit;
+ }
+
+ ///
+ /// The base unit of AreaPerLength, which is Second. All conversions go via this value.
+ ///
+ public static AreaPerLengthUnit BaseUnit { get; } = AreaPerLengthUnit.SquareMeterPerMeter;
+
+ ///
+ /// Represents the largest possible value of AreaPerLength.
+ ///
+ public static AreaPerLength MaxValue { get; } = new AreaPerLength(double.MaxValue, BaseUnit);
+
+ ///
+ /// Represents the smallest possible value of AreaPerLength.
+ ///
+ public static AreaPerLength MinValue { get; } = new AreaPerLength(double.MinValue, BaseUnit);
+
+ ///
+ /// Gets an instance of this quantity with a value of 0 in the base unit Second.
+ ///
+ public static AreaPerLength Zero { get; } = new AreaPerLength(0, BaseUnit);
+ #region Conversion Properties
+
+ ///
+ /// Gets a value of this quantity converted into
+ ///
+ public double SquareCentimetersPerMeter => As(AreaPerLengthUnit.SquareCentimeterPerMeter);
+
+ ///
+ /// Gets a value of this quantity converted into
+ ///
+ public double SquareFeetPerFoot => As(AreaPerLengthUnit.SquareFootPerFoot);
+
+ ///
+ /// Gets a value of this quantity converted into
+ ///
+ public double SquareInchesPerFoot => As(AreaPerLengthUnit.SquareInchPerFoot);
+
+ ///
+ /// Gets a value of this quantity converted into
+ ///
+ public double SquareInchesPerInch => As(AreaPerLengthUnit.SquareInchPerInch);
+
+ ///
+ /// Gets a value of this quantity converted into
+ ///
+ public double SquareMetersPerMeter => As(AreaPerLengthUnit.SquareMeterPerMeter);
+
+ ///
+ /// Gets a value of this quantity converted into
+ ///
+ public double SquareMillimetersPerMeter => As(AreaPerLengthUnit.SquareMillimeterPerMeter);
+
+ #endregion
+
+ #region Static Factory Methods
+
+ ///
+ /// Creates a from .
+ ///
+ public static AreaPerLength FromSquareCentimetersPerMeter(double squarecentimeterspermeter) => new AreaPerLength(squarecentimeterspermeter, AreaPerLengthUnit.SquareCentimeterPerMeter);
+
+ ///
+ /// Creates a from .
+ ///
+ public static AreaPerLength FromSquareFeetPerFoot(double squarefeetperfoot) => new AreaPerLength(squarefeetperfoot, AreaPerLengthUnit.SquareFootPerFoot);
+
+ ///
+ /// Creates a from .
+ ///
+ public static AreaPerLength FromSquareInchesPerFoot(double squareinchesperfoot) => new AreaPerLength(squareinchesperfoot, AreaPerLengthUnit.SquareInchPerFoot);
+
+ ///
+ /// Creates a from .
+ ///
+ public static AreaPerLength FromSquareInchesPerInch(double squareinchesperinch) => new AreaPerLength(squareinchesperinch, AreaPerLengthUnit.SquareInchPerInch);
+
+ ///
+ /// Creates a from .
+ ///
+ public static AreaPerLength FromSquareMetersPerMeter(double squaremeterspermeter) => new AreaPerLength(squaremeterspermeter, AreaPerLengthUnit.SquareMeterPerMeter);
+
+ ///
+ /// Creates a from .
+ ///
+ public static AreaPerLength FromSquareMillimetersPerMeter(double squaremillimeterspermeter) => new AreaPerLength(squaremillimeterspermeter, AreaPerLengthUnit.SquareMillimeterPerMeter);
+
+ ///
+ /// Dynamically convert from value and unit enum to .
+ ///
+ /// Value to convert from.
+ /// Unit to convert from.
+ /// AreaPerLength unit value.
+ public static AreaPerLength From(double value, AreaPerLengthUnit fromUnit)
+ {
+ return new AreaPerLength(value, fromUnit);
+ }
+
+ #endregion
+
+ #region Conversion Methods
+
+ ///
+ /// Convert to the unit representation .
+ ///
+ /// Value converted to the specified unit.
+ public double As(AreaPerLengthUnit unit) => GetValueAs(unit);
+
+ ///
+ /// Converts this AreaPerLength to another AreaPerLength with the unit representation .
+ ///
+ /// A AreaPerLength with the specified unit.
+ public AreaPerLength ToUnit(AreaPerLengthUnit unit)
+ {
+ var convertedValue = GetValueAs(unit);
+ return new AreaPerLength(convertedValue, unit);
+ }
+
+ ///
+ /// Converts the current value + unit to the base unit.
+ /// This is typically the first step in converting from one unit to another.
+ ///
+ /// The value in the base unit representation.
+ private double GetValueInBaseUnit()
+ {
+ return Unit switch
+ {
+ AreaPerLengthUnit.SquareCentimeterPerMeter => _value * 1e-4,
+ AreaPerLengthUnit.SquareFootPerFoot => _value * 0.09290304 / 0.3048,
+ AreaPerLengthUnit.SquareInchPerFoot => _value * 0.00064516 / 0.3048,
+ AreaPerLengthUnit.SquareInchPerInch => _value * 0.00064516 / 0.0254,
+ AreaPerLengthUnit.SquareMeterPerMeter => _value,
+ AreaPerLengthUnit.SquareMillimeterPerMeter => _value * 1e-6,
+ _ => throw new NotImplementedException($"Can't convert {Unit} to base units.")
+ };
+ }
+
+ private double GetValueAs(AreaPerLengthUnit unit)
+ {
+ if (Unit == unit)
+ return _value;
+
+ var baseUnitValue = GetValueInBaseUnit();
+
+ return unit switch
+ {
+ AreaPerLengthUnit.SquareCentimeterPerMeter => baseUnitValue / 1e-4,
+ AreaPerLengthUnit.SquareFootPerFoot => baseUnitValue * 0.3048 / 0.09290304,
+ AreaPerLengthUnit.SquareInchPerFoot => baseUnitValue * 0.3048 / 0.00064516,
+ AreaPerLengthUnit.SquareInchPerInch => baseUnitValue * 0.0254 / 0.00064516,
+ AreaPerLengthUnit.SquareMeterPerMeter => baseUnitValue,
+ AreaPerLengthUnit.SquareMillimeterPerMeter => baseUnitValue / 1e-6,
+ _ => throw new NotImplementedException($"Can't convert {Unit} to {unit}.")
+ };
+ }
+
+ #endregion
+ }
+}
+
diff --git a/UnitsNet.NanoFramework/GeneratedCode/Units/AreaPerLengthUnit.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Units/AreaPerLengthUnit.g.cs
new file mode 100644
index 0000000000..7dad5d4754
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/Units/AreaPerLengthUnit.g.cs
@@ -0,0 +1,37 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+// ReSharper disable once CheckNamespace
+namespace UnitsNet.Units
+{
+ // Disable missing XML comment warnings for the generated unit enums.
+ #pragma warning disable 1591
+
+ public enum AreaPerLengthUnit
+ {
+ SquareCentimeterPerMeter = 10,
+ SquareFootPerFoot = 4,
+ SquareInchPerFoot = 3,
+ SquareInchPerInch = 7,
+ SquareMeterPerMeter = 1,
+ SquareMillimeterPerMeter = 5,
+ }
+
+ #pragma warning restore 1591
+}
diff --git a/UnitsNet.NanoFramework/GeneratedCode/UnitsNet.nanoFramework.sln b/UnitsNet.NanoFramework/GeneratedCode/UnitsNet.nanoFramework.sln
index f2d98d63c4..4409409884 100644
--- a/UnitsNet.NanoFramework/GeneratedCode/UnitsNet.nanoFramework.sln
+++ b/UnitsNet.NanoFramework/GeneratedCode/UnitsNet.nanoFramework.sln
@@ -18,6 +18,8 @@ Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "AreaDensity", "AreaDensity\
EndProject
Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "AreaMomentOfInertia", "AreaMomentOfInertia\AreaMomentOfInertia.nfproj", "{566ef13c-0d17-e465-d35f-1bd9c65559bf}"
EndProject
+Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "AreaPerLength", "AreaPerLength\AreaPerLength.nfproj", "{99bce9bf-d162-d7b5-a3f8-ea77e4f194c3}"
+EndProject
Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "BitRate", "BitRate\BitRate.nfproj", "{b5fdf997-829f-5281-e624-ee4eee5aa26c}"
EndProject
Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "BrakeSpecificFuelConsumption", "BrakeSpecificFuelConsumption\BrakeSpecificFuelConsumption.nfproj", "{085145f2-2b8f-4d09-5290-c14cdcd452bf}"
@@ -312,6 +314,12 @@ Global
{566ef13c-0d17-e465-d35f-1bd9c65559bf}.Release|Any CPU.ActiveCfg = Release|Any CPU
{566ef13c-0d17-e465-d35f-1bd9c65559bf}.Release|Any CPU.Build.0 = Release|Any CPU
{566ef13c-0d17-e465-d35f-1bd9c65559bf}.Release|Any CPU.Deploy.0 = Release|Any CPU
+{99bce9bf-d162-d7b5-a3f8-ea77e4f194c3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+{99bce9bf-d162-d7b5-a3f8-ea77e4f194c3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+{99bce9bf-d162-d7b5-a3f8-ea77e4f194c3}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+{99bce9bf-d162-d7b5-a3f8-ea77e4f194c3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+{99bce9bf-d162-d7b5-a3f8-ea77e4f194c3}.Release|Any CPU.Build.0 = Release|Any CPU
+{99bce9bf-d162-d7b5-a3f8-ea77e4f194c3}.Release|Any CPU.Deploy.0 = Release|Any CPU
{b5fdf997-829f-5281-e624-ee4eee5aa26c}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{b5fdf997-829f-5281-e624-ee4eee5aa26c}.Debug|Any CPU.Build.0 = Debug|Any CPU
{b5fdf997-829f-5281-e624-ee4eee5aa26c}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
diff --git a/UnitsNet.NumberExtensions.CS14.Tests/GeneratedCode/NumberToAreaPerLengthExtensionsTest.g.cs b/UnitsNet.NumberExtensions.CS14.Tests/GeneratedCode/NumberToAreaPerLengthExtensionsTest.g.cs
new file mode 100644
index 0000000000..bedb3ca1fc
--- /dev/null
+++ b/UnitsNet.NumberExtensions.CS14.Tests/GeneratedCode/NumberToAreaPerLengthExtensionsTest.g.cs
@@ -0,0 +1,52 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using UnitsNet.NumberExtensions.NumberToAreaPerLength;
+using Xunit;
+
+namespace UnitsNet.Tests
+{
+ public class NumberToAreaPerLengthExtensionsTests
+ {
+ [Fact]
+ public void NumberToSquareCentimetersPerMeterTest() =>
+ Assert.Equal(AreaPerLength.FromSquareCentimetersPerMeter(2), 2.SquareCentimetersPerMeter);
+
+ [Fact]
+ public void NumberToSquareFeetPerFootTest() =>
+ Assert.Equal(AreaPerLength.FromSquareFeetPerFoot(2), 2.SquareFeetPerFoot);
+
+ [Fact]
+ public void NumberToSquareInchesPerFootTest() =>
+ Assert.Equal(AreaPerLength.FromSquareInchesPerFoot(2), 2.SquareInchesPerFoot);
+
+ [Fact]
+ public void NumberToSquareInchesPerInchTest() =>
+ Assert.Equal(AreaPerLength.FromSquareInchesPerInch(2), 2.SquareInchesPerInch);
+
+ [Fact]
+ public void NumberToSquareMetersPerMeterTest() =>
+ Assert.Equal(AreaPerLength.FromSquareMetersPerMeter(2), 2.SquareMetersPerMeter);
+
+ [Fact]
+ public void NumberToSquareMillimetersPerMeterTest() =>
+ Assert.Equal(AreaPerLength.FromSquareMillimetersPerMeter(2), 2.SquareMillimetersPerMeter);
+
+ }
+}
diff --git a/UnitsNet.NumberExtensions.CS14/GeneratedCode/NumberToAreaPerLengthExtensions.g.cs b/UnitsNet.NumberExtensions.CS14/GeneratedCode/NumberToAreaPerLengthExtensions.g.cs
new file mode 100644
index 0000000000..ce3e24ba13
--- /dev/null
+++ b/UnitsNet.NumberExtensions.CS14/GeneratedCode/NumberToAreaPerLengthExtensions.g.cs
@@ -0,0 +1,95 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using System;
+
+#if NET7_0_OR_GREATER
+using System.Numerics;
+#endif
+
+#nullable enable
+
+namespace UnitsNet.NumberExtensions.NumberToAreaPerLength
+{
+ ///
+ /// A number to AreaPerLength Extensions
+ ///
+ public static class NumberToAreaPerLengthExtensions
+ {
+#pragma warning disable CS1591
+ extension(T value)
+#pragma warning restore CS1591
+ where T : notnull
+#if NET7_0_OR_GREATER
+ , INumber
+#else
+ , IConvertible
+#endif
+ {
+ ///
+ public AreaPerLength SquareCentimetersPerMeter
+#if NET7_0_OR_GREATER
+ => AreaPerLength.FromSquareCentimetersPerMeter(double.CreateChecked(value));
+#else
+ => AreaPerLength.FromSquareCentimetersPerMeter(value.ToDouble(null));
+#endif
+
+ ///
+ public AreaPerLength SquareFeetPerFoot
+#if NET7_0_OR_GREATER
+ => AreaPerLength.FromSquareFeetPerFoot(double.CreateChecked(value));
+#else
+ => AreaPerLength.FromSquareFeetPerFoot(value.ToDouble(null));
+#endif
+
+ ///
+ public AreaPerLength SquareInchesPerFoot
+#if NET7_0_OR_GREATER
+ => AreaPerLength.FromSquareInchesPerFoot(double.CreateChecked(value));
+#else
+ => AreaPerLength.FromSquareInchesPerFoot(value.ToDouble(null));
+#endif
+
+ ///
+ public AreaPerLength SquareInchesPerInch
+#if NET7_0_OR_GREATER
+ => AreaPerLength.FromSquareInchesPerInch(double.CreateChecked(value));
+#else
+ => AreaPerLength.FromSquareInchesPerInch(value.ToDouble(null));
+#endif
+
+ ///
+ public AreaPerLength SquareMetersPerMeter
+#if NET7_0_OR_GREATER
+ => AreaPerLength.FromSquareMetersPerMeter(double.CreateChecked(value));
+#else
+ => AreaPerLength.FromSquareMetersPerMeter(value.ToDouble(null));
+#endif
+
+ ///
+ public AreaPerLength SquareMillimetersPerMeter
+#if NET7_0_OR_GREATER
+ => AreaPerLength.FromSquareMillimetersPerMeter(double.CreateChecked(value));
+#else
+ => AreaPerLength.FromSquareMillimetersPerMeter(value.ToDouble(null));
+#endif
+
+ }
+ }
+}
diff --git a/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToAreaPerLengthExtensionsTest.g.cs b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToAreaPerLengthExtensionsTest.g.cs
new file mode 100644
index 0000000000..801cd9f5f5
--- /dev/null
+++ b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToAreaPerLengthExtensionsTest.g.cs
@@ -0,0 +1,52 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using UnitsNet.NumberExtensions.NumberToAreaPerLength;
+using Xunit;
+
+namespace UnitsNet.Tests
+{
+ public class NumberToAreaPerLengthExtensionsTests
+ {
+ [Fact]
+ public void NumberToSquareCentimetersPerMeterTest() =>
+ Assert.Equal(AreaPerLength.FromSquareCentimetersPerMeter(2), 2.SquareCentimetersPerMeter());
+
+ [Fact]
+ public void NumberToSquareFeetPerFootTest() =>
+ Assert.Equal(AreaPerLength.FromSquareFeetPerFoot(2), 2.SquareFeetPerFoot());
+
+ [Fact]
+ public void NumberToSquareInchesPerFootTest() =>
+ Assert.Equal(AreaPerLength.FromSquareInchesPerFoot(2), 2.SquareInchesPerFoot());
+
+ [Fact]
+ public void NumberToSquareInchesPerInchTest() =>
+ Assert.Equal(AreaPerLength.FromSquareInchesPerInch(2), 2.SquareInchesPerInch());
+
+ [Fact]
+ public void NumberToSquareMetersPerMeterTest() =>
+ Assert.Equal(AreaPerLength.FromSquareMetersPerMeter(2), 2.SquareMetersPerMeter());
+
+ [Fact]
+ public void NumberToSquareMillimetersPerMeterTest() =>
+ Assert.Equal(AreaPerLength.FromSquareMillimetersPerMeter(2), 2.SquareMillimetersPerMeter());
+
+ }
+}
diff --git a/UnitsNet.NumberExtensions/GeneratedCode/NumberToAreaPerLengthExtensions.g.cs b/UnitsNet.NumberExtensions/GeneratedCode/NumberToAreaPerLengthExtensions.g.cs
new file mode 100644
index 0000000000..777ead587f
--- /dev/null
+++ b/UnitsNet.NumberExtensions/GeneratedCode/NumberToAreaPerLengthExtensions.g.cs
@@ -0,0 +1,102 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using System;
+
+#if NET7_0_OR_GREATER
+using System.Numerics;
+#endif
+
+#nullable enable
+
+namespace UnitsNet.NumberExtensions.NumberToAreaPerLength
+{
+ ///
+ /// A number to AreaPerLength Extensions
+ ///
+ public static class NumberToAreaPerLengthExtensions
+ {
+ ///
+ public static AreaPerLength SquareCentimetersPerMeter(this T value)
+ where T : notnull
+#if NET7_0_OR_GREATER
+ , INumber
+ => AreaPerLength.FromSquareCentimetersPerMeter(double.CreateChecked(value));
+#else
+ , IConvertible
+ => AreaPerLength.FromSquareCentimetersPerMeter(value.ToDouble(null));
+#endif
+
+ ///
+ public static AreaPerLength SquareFeetPerFoot(this T value)
+ where T : notnull
+#if NET7_0_OR_GREATER
+ , INumber
+ => AreaPerLength.FromSquareFeetPerFoot(double.CreateChecked(value));
+#else
+ , IConvertible
+ => AreaPerLength.FromSquareFeetPerFoot(value.ToDouble(null));
+#endif
+
+ ///
+ public static AreaPerLength SquareInchesPerFoot(this T value)
+ where T : notnull
+#if NET7_0_OR_GREATER
+ , INumber
+ => AreaPerLength.FromSquareInchesPerFoot(double.CreateChecked(value));
+#else
+ , IConvertible
+ => AreaPerLength.FromSquareInchesPerFoot(value.ToDouble(null));
+#endif
+
+ ///
+ public static AreaPerLength SquareInchesPerInch(this T value)
+ where T : notnull
+#if NET7_0_OR_GREATER
+ , INumber
+ => AreaPerLength.FromSquareInchesPerInch(double.CreateChecked(value));
+#else
+ , IConvertible
+ => AreaPerLength.FromSquareInchesPerInch(value.ToDouble(null));
+#endif
+
+ ///
+ public static AreaPerLength SquareMetersPerMeter(this T value)
+ where T : notnull
+#if NET7_0_OR_GREATER
+ , INumber
+ => AreaPerLength.FromSquareMetersPerMeter(double.CreateChecked(value));
+#else
+ , IConvertible
+ => AreaPerLength.FromSquareMetersPerMeter(value.ToDouble(null));
+#endif
+
+ ///
+ public static AreaPerLength SquareMillimetersPerMeter(this T value)
+ where T : notnull
+#if NET7_0_OR_GREATER
+ , INumber
+ => AreaPerLength.FromSquareMillimetersPerMeter(double.CreateChecked(value));
+#else
+ , IConvertible
+ => AreaPerLength.FromSquareMillimetersPerMeter(value.ToDouble(null));
+#endif
+
+ }
+}
diff --git a/UnitsNet.Tests/CustomCode/AreaPerLengthTests.cs b/UnitsNet.Tests/CustomCode/AreaPerLengthTests.cs
new file mode 100644
index 0000000000..c7ae2284bd
--- /dev/null
+++ b/UnitsNet.Tests/CustomCode/AreaPerLengthTests.cs
@@ -0,0 +1,22 @@
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using System;
+
+namespace UnitsNet.Tests.CustomCode
+{
+ public class AreaPerLengthTests : AreaPerLengthTestsBase
+ {
+ protected override double SquareMetersPerMeterInOneSquareMeterPerMeter => 1;
+
+ protected override double SquareCentimetersPerMeterInOneSquareMeterPerMeter => 1E4;
+
+ protected override double SquareMillimetersPerMeterInOneSquareMeterPerMeter => 1E6;
+
+ protected override double SquareInchesPerFootInOneSquareMeterPerMeter => 472.44094488188976;
+
+ protected override double SquareInchesPerInchInOneSquareMeterPerMeter => 39.370078740157481;
+
+ protected override double SquareFeetPerFootInOneSquareMeterPerMeter => 3.2808398950131234;
+ }
+}
diff --git a/UnitsNet.Tests/GeneratedCode/IQuantityTests.g.cs b/UnitsNet.Tests/GeneratedCode/IQuantityTests.g.cs
index 9dfabd182a..3af19e212b 100644
--- a/UnitsNet.Tests/GeneratedCode/IQuantityTests.g.cs
+++ b/UnitsNet.Tests/GeneratedCode/IQuantityTests.g.cs
@@ -42,6 +42,7 @@ void Assertion(int expectedValue, Enum expectedUnit, IQuantity quantity)
Assertion(3, AreaUnit.UsSurveySquareFoot, Quantity.From(3, AreaUnit.UsSurveySquareFoot));
Assertion(3, AreaDensityUnit.MilligramPerSquareMeter, Quantity.From(3, AreaDensityUnit.MilligramPerSquareMeter));
Assertion(3, AreaMomentOfInertiaUnit.MillimeterToTheFourth, Quantity.From(3, AreaMomentOfInertiaUnit.MillimeterToTheFourth));
+ Assertion(3, AreaPerLengthUnit.SquareMillimeterPerMeter, Quantity.From(3, AreaPerLengthUnit.SquareMillimeterPerMeter));
Assertion(3, BitRateUnit.TeraoctetPerSecond, Quantity.From(3, BitRateUnit.TeraoctetPerSecond));
Assertion(3, BrakeSpecificFuelConsumptionUnit.PoundPerMechanicalHorsepowerHour, Quantity.From(3, BrakeSpecificFuelConsumptionUnit.PoundPerMechanicalHorsepowerHour));
Assertion(3, CoefficientOfThermalExpansionUnit.PpmPerKelvin, Quantity.From(3, CoefficientOfThermalExpansionUnit.PpmPerKelvin));
@@ -177,6 +178,7 @@ public void QuantityInfo_IsSameAsStaticInfoProperty()
Assertion(Area.Info, Area.Zero);
Assertion(AreaDensity.Info, AreaDensity.Zero);
Assertion(AreaMomentOfInertia.Info, AreaMomentOfInertia.Zero);
+ Assertion(AreaPerLength.Info, AreaPerLength.Zero);
Assertion(BitRate.Info, BitRate.Zero);
Assertion(BrakeSpecificFuelConsumption.Info, BrakeSpecificFuelConsumption.Zero);
Assertion(CoefficientOfThermalExpansion.Info, CoefficientOfThermalExpansion.Zero);
diff --git a/UnitsNet.Tests/GeneratedCode/TestsBase/AreaPerLengthTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/TestsBase/AreaPerLengthTestsBase.g.cs
new file mode 100644
index 0000000000..12258cdfc1
--- /dev/null
+++ b/UnitsNet.Tests/GeneratedCode/TestsBase/AreaPerLengthTestsBase.g.cs
@@ -0,0 +1,741 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Threading;
+using UnitsNet.InternalHelpers;
+using UnitsNet.Tests.Helpers;
+using UnitsNet.Tests.TestsBase;
+using UnitsNet.Units;
+using Xunit;
+
+// Disable build warning CS1718: Comparison made to same variable; did you mean to compare something else?
+#pragma warning disable 1718
+
+// ReSharper disable once CheckNamespace
+namespace UnitsNet.Tests
+{
+ ///
+ /// Test of AreaPerLength.
+ ///
+// ReSharper disable once PartialTypeWithSinglePart
+ public abstract partial class AreaPerLengthTestsBase : QuantityTestsBase
+ {
+ protected abstract double SquareCentimetersPerMeterInOneSquareMeterPerMeter { get; }
+ protected abstract double SquareFeetPerFootInOneSquareMeterPerMeter { get; }
+ protected abstract double SquareInchesPerFootInOneSquareMeterPerMeter { get; }
+ protected abstract double SquareInchesPerInchInOneSquareMeterPerMeter { get; }
+ protected abstract double SquareMetersPerMeterInOneSquareMeterPerMeter { get; }
+ protected abstract double SquareMillimetersPerMeterInOneSquareMeterPerMeter { get; }
+
+// ReSharper disable VirtualMemberNeverOverriden.Global
+ protected virtual double SquareCentimetersPerMeterTolerance { get { return 1e-5; } }
+ protected virtual double SquareFeetPerFootTolerance { get { return 1e-5; } }
+ protected virtual double SquareInchesPerFootTolerance { get { return 1e-5; } }
+ protected virtual double SquareInchesPerInchTolerance { get { return 1e-5; } }
+ protected virtual double SquareMetersPerMeterTolerance { get { return 1e-5; } }
+ protected virtual double SquareMillimetersPerMeterTolerance { get { return 1e-5; } }
+// ReSharper restore VirtualMemberNeverOverriden.Global
+
+ protected (double UnitsInBaseUnit, double Tolerence) GetConversionFactor(AreaPerLengthUnit unit)
+ {
+ return unit switch
+ {
+ AreaPerLengthUnit.SquareCentimeterPerMeter => (SquareCentimetersPerMeterInOneSquareMeterPerMeter, SquareCentimetersPerMeterTolerance),
+ AreaPerLengthUnit.SquareFootPerFoot => (SquareFeetPerFootInOneSquareMeterPerMeter, SquareFeetPerFootTolerance),
+ AreaPerLengthUnit.SquareInchPerFoot => (SquareInchesPerFootInOneSquareMeterPerMeter, SquareInchesPerFootTolerance),
+ AreaPerLengthUnit.SquareInchPerInch => (SquareInchesPerInchInOneSquareMeterPerMeter, SquareInchesPerInchTolerance),
+ AreaPerLengthUnit.SquareMeterPerMeter => (SquareMetersPerMeterInOneSquareMeterPerMeter, SquareMetersPerMeterTolerance),
+ AreaPerLengthUnit.SquareMillimeterPerMeter => (SquareMillimetersPerMeterInOneSquareMeterPerMeter, SquareMillimetersPerMeterTolerance),
+ _ => throw new NotSupportedException()
+ };
+ }
+
+ public static IEnumerable