Semantity 0.4.0
dotnet add package Semantity --version 0.4.0
NuGet\Install-Package Semantity -Version 0.4.0
<PackageReference Include="Semantity" Version="0.4.0" />
paket add Semantity --version 0.4.0
#r "nuget: Semantity, 0.4.0"
// Install Semantity as a Cake Addin #addin nuget:?package=Semantity&version=0.4.0 // Install Semantity as a Cake Tool #tool nuget:?package=Semantity&version=0.4.0
Semantity
This package provides semantic types for physical quantities and units of measurement. They are typesafe and offer convenient extensions in order to use them for calculations and display.
NuGet
Please find the latest NuGet package here.
Usage
The combination of operator overloading and extension methods simplifies the code drastically. Type inference allows for code like this:
var area = 40.MilliMeters() * 2.5.Meters();
var intensity = 100.Watts() / area;
// Prints "Intensity: 1000 W/m²"
Console.WriteLine($"Intensity: {intensity}");
Each quantity has a base unit and multiple other units to which they can be converted easily:
Memory memory = 2.KibiBytes();
Memory memoryInBytes = memory.In<Bytes>();
// Prints "Memory in bytes: 2048 B"
Console.WriteLine($"Memory in bytes: {memoryInBytes.Value} B");
Type safety prevents you from making mistakes like the following:
Mass mass = 0.4.KiloGrams();
Mass anotherMass = mass.In<Hertz>(); // Won't compile!
Frequency frequency = mass.In<Hertz>(); // Won't compile!
The basic arithmetic operations are implemented generically:
Console.WriteLine(1.5.Seconds() + 500.MilliSeconds()); // Prints "2 s"
Console.WriteLine(1.CubicMeters() - 200.Liters()); // Prints "0.8 m³"
Console.WriteLine(10e6.PartsPerMillion() * 100.Percent()); // Prints "1 "
Console.WriteLine(2.Joules() / 100.MilliJoules()); // Prints "20 J"
The current implementation includes the following quantities:
- Acceleration
- Area
- Density
- Energy
- Force
- Frequency
- Intensity
- Length
- Mass
- Memory
- Power
- Ratio
- Temperature
- Time
- Velocity
- Volume
If you have any suggestions or requests regarding Semantity feel free to contact me.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added Force and Mass