Universal.Common 8.3.4

dotnet add package Universal.Common --version 8.3.4
                    
NuGet\Install-Package Universal.Common -Version 8.3.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Universal.Common" Version="8.3.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Universal.Common" Version="8.3.4" />
                    
Directory.Packages.props
<PackageReference Include="Universal.Common" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Universal.Common --version 8.3.4
                    
#r "nuget: Universal.Common, 8.3.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Universal.Common@8.3.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Universal.Common&version=8.3.4
                    
Install as a Cake Addin
#tool nuget:?package=Universal.Common&version=8.3.4
                    
Install as a Cake Tool

Universal.Common

Support utilities and extensions meant to extend the default functionality from the base class library.

Classes

BinaryReader

Endianness-aware implementation of System.IO.BinaryReader, allowing to read primitive types from a stream in big-endian or little-endian byte order.

using (var stream = new FileStream("file.bin", FileMode.Open, FileAccess.Read))
{
    // Create a BinaryReader with big-endian byte order
    using (var reader = new BinaryReader(stream, Endian.Big))
    {
        // Read an Int32 in big-endian order
        int value = reader.ReadInt32();
    }
}

BinaryWriter

Endianness-aware implementation of System.IO.BinaryWriter, allowing to write primitive types to a stream in big-endian or little-endian byte order.

using (var stream = new FileStream("file.bin", FileMode.Create, FileAccess.Write))
{
    // Create a BinaryWriter with big-endian byte order
    using (var writer = new BinaryWriter(stream, Endian.Big))
    {
        // Write an Int32 in big-endian order
        writer.Write(1234567890);
    }
}

BitSequence

Utility for as-is bit manipulations.

BitSequence bs1 = new BitSequence("10001010"); // Binary representation in string.
BitSequence bs2 = new BitSequence(new bool[] { true, false, true }); // As booleans.
BitSequence bs3 = bs1 & "11110000"; // Bitwise and, implicit conversion from binary representation string.

BitStream

Utility to perform bit-level operations on System.IO.Stream.

using (BitStream bitStream = new BitStream(stream)) 
{
    uint value = bitStream.ReadUInt32(4); // Reads 4 bits from the stream and interprets it as an unsigned integer, padding if necessary.
}

MediaType

Represents MIME types and provides functionality for working with media types in various contexts.

Constructor
MediaType mediaType = new MediaType("application/json");
MediaType Detection

The MediaType class provides several static methods to create MediaType instances from different sources:

  1. FromExtension
MediaType mediaType = MediaType.FromExtension(".json");
// Returns a MediaType instance for "application/json"

Creates a MediaType instance based on a file extension (with or without the leading dot).

  1. FromByteArray
byte[] fileBytes = File.ReadAllBytes("sample.png");
MediaType mediaType = MediaType.FromByteArray(fileBytes);
// Returns a MediaType instance for "image/png"

Detects the media type based on the file signature in the byte array.

  1. FromStream
using (FileStream stream = File.OpenRead("sample.jpg"))
{
    MediaType mediaType = MediaType.FromStream(stream);
    // Returns a MediaType instance for "image/jpeg"
}

Detects the media type based on the file signature read from the stream.

These methods allow for flexible media type detection from various sources, making it easier to work with files and data streams in different formats.

SemanticVersion

Implements version numbers that follow the Semantic Versioning 2.0.0 specification (https://semver.org/). Supports major, minor, and patch version components along with pre-release identifiers and build metadata.

// Basic version
var version = new SemanticVersion(1, 2, 3); // 1.2.3

// Version with pre-release and build metadata
var version = new SemanticVersion(1, 2, 3, "alpha.1", "build.123"); // 1.2.3-alpha.1+build.123

// Parse from string
SemanticVersion version = SemanticVersion.Parse("2.0.0-rc.1+build.123");

// Version comparison follows SemVer rules
Assert.IsTrue(SemanticVersion.Parse("1.0.0-alpha") < SemanticVersion.Parse("1.0.0"));
Assert.IsTrue(SemanticVersion.Parse("1.0.0-alpha.1") < SemanticVersion.Parse("1.0.0-alpha.2"));

StreamSegment

Represents a segment of a Stream that is itself a stream. This allows you to work with a specific portion of a stream as if it were a separate stream.

using (var stream = new FileStream("file.bin", FileMode.Open, FileAccess.Read))
{
    // Create a StreamSegment that represents the first 1024 bytes of the stream
    using (var segment = new StreamSegment(stream, 0, 1024))
    {
        // Read the first 1024 bytes of the stream
        byte buffer = new byte;
        segment.Read(buffer, 0, 1024);
    }
}

UriBuilder

Derived from System.UriBuilder, this class provides a fluent API to configure segments and queries.

UriBuilder uriBuilder = new UriBuilder("http://www.myhost.com");
uriBuilder
    .AddSegments("api", "Product", 1)
    .AddQuery("key", "value");
// "https://www.myhost.com/api/Product/1?key=value"

ZigZag

Static class that encodes arrays to matrices and vice-versa.

int[,] matrix = new int[,] { { 0, 1 }, { 2, 3 } };
int[] array = ZigZag.ToArray(matrix); // [0, 1, 2, 3]
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  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 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.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 is compatible. 
.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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net6.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (29)

Showing the top 5 NuGet packages that depend on Universal.Common:

Package Downloads
Universal.Common.Reflection

Class library for performing advanced operations with types, dynamic objects, expressions, and reflection.

Universal.Common.Net.Http

Class library to build clients and work with HTTP web services.

Universal.Common.Serialization

Class library with base objects that provide serializable to and from XML and JSON strings and binary serialization using the native binary formatter.

Universal.Common.Mathematics

Class library implementing advanced mathematical algorithms, transforms, and time series manipulations. Implementations favour simplicity and correctness.

Universal.Common.Collections

Class library with specialized collections to model graphs, queues, multi-value dictionaries and such.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
8.3.4 373 8/14/2025
8.3.3 7,687 2/22/2025
8.3.2 228 2/22/2025
8.3.1 248 2/16/2025
8.3.0 140 2/15/2025
8.2.5 2,264 10/17/2024
8.2.4.1 1,995 7/15/2024
8.2.4 17,694 9/25/2023
8.2.3 1,866 6/8/2023
8.2.2 2,619 11/23/2022
8.2.1 461 11/22/2022
8.2.0 12,001 9/14/2022
8.1.2 25,041 10/24/2021
8.1.1 560 10/23/2021
8.1.0 562 10/23/2021
8.0.0 14,549 10/13/2021
7.7.1 7,523 8/24/2021
7.7.0 497 8/24/2021
7.6.2 545 8/19/2021
7.6.1 13,231 6/17/2021
7.6.0 2,416 6/3/2021
7.5.7 3,139 4/30/2021
7.5.6 544 4/29/2021
7.5.5 794 4/13/2021
7.5.4 10,711 3/31/2021
7.5.3 6,501 3/21/2021
7.5.2 1,405 3/15/2021
7.5.1 987 2/16/2021
7.5.0 35,173 2/5/2021
7.4.6 598 2/2/2021
7.4.5.1 2,141 1/15/2021
7.4.5 1,233 1/13/2021
7.4.4 1,828 1/7/2021
7.4.3 2,189 12/16/2020
7.4.2.1 677 12/15/2020
7.4.2 642 12/9/2020
7.4.1 5,646 11/26/2020
7.4.0 625 11/26/2020
7.3.5 2,975 11/23/2020
7.3.4 1,936 11/11/2020
7.3.3 660 11/11/2020
7.3.2 1,468 11/1/2020
7.3.1.1 4,839 10/19/2020
7.3.1 655 10/15/2020
7.3.0 645 10/15/2020
7.2.2 3,646 9/29/2020
7.2.1 782 9/29/2020
7.2.0 639 9/29/2020
7.1.1.1 714 9/28/2020
7.1.1 751 9/25/2020
7.1.0 1,881 9/2/2020
7.0.0 6,383 8/24/2020
6.4.7 733 8/21/2020
6.4.6 720 8/21/2020
6.4.5 20,507 5/21/2020
6.4.4 2,013 5/12/2020
6.4.3 2,200 4/23/2020
6.4.2 685 4/20/2020
6.4.1.2 19,065 3/20/2020
6.4.1.1 752 3/20/2020
6.4.1 732 3/20/2020
6.4.0 6,139 2/25/2020
6.3.5 1,369 2/21/2020
6.3.4 795 2/21/2020
6.3.3 3,845 2/11/2020
6.3.2 795 2/11/2020
6.3.1.1 7,414 1/23/2020
6.3.0 4,461 12/18/2019
6.2.7 2,324 12/17/2019
6.2.6 1,463 12/4/2019
6.2.5 934 12/4/2019
6.2.4 3,571 12/1/2019
6.2.3 10,596 10/25/2019
6.2.2 3,632 10/8/2019
6.2.1 1,176 10/7/2019
6.2.0.1 5,559 9/25/2019
6.2.0 1,886 9/20/2019
6.1.5 3,297 9/16/2019
6.1.4.1 1,791 9/9/2019
6.1.4 2,259 9/3/2019
6.1.3 749 9/2/2019
6.1.2 952 8/28/2019
6.1.1 7,766 7/9/2019
6.1.0.1 30,843 7/5/2019
6.1.0 17,215 5/7/2019
6.0.6 1,951 5/3/2019
6.0.5 1,471 5/2/2019
6.0.4 4,924 4/24/2019
6.0.3 1,131 4/24/2019
6.0.2 8,035 3/22/2019
6.0.1.2 2,529 3/12/2019
6.0.1.1 986 3/12/2019
6.0.1 1,004 3/11/2019
6.0.0 1,782 3/6/2019
5.3.6 919 3/5/2019
5.3.5 887 3/5/2019
5.3.4 1,980 3/4/2019
5.3.3 1,615 2/28/2019
5.3.2 1,448 2/27/2019
5.3.1.1 1,011 2/25/2019
5.3.1 898 2/25/2019
5.3.0 857 2/25/2019
5.2.1 3,534 2/16/2019
5.2.0.1 3,979 2/7/2019
5.1.8 938 2/7/2019
5.1.7.1 1,164 1/30/2019
5.1.7 950 1/30/2019
5.1.6.1 960 1/24/2019
5.1.6 916 1/23/2019
5.1.5 925 1/23/2019
5.1.4.2 975 1/18/2019
5.1.3 1,714 1/14/2019
5.1.2 7,812 1/8/2019
5.1.1.1 958 1/8/2019
5.1.1 951 1/6/2019
5.1.0 1,589 1/2/2019
5.0.2 980 12/31/2018
5.0.1.1 957 12/31/2018
5.0.1 945 12/31/2018
5.0.0.1 1,090 12/14/2018
5.0.0 2,324 12/10/2018
4.2.5 1,024 11/23/2018
4.2.4 1,035 11/23/2018
4.2.3.1 1,012 11/22/2018
4.2.3 995 11/22/2018
4.2.2.2 1,275 11/19/2018
4.2.2.1 8,505 10/2/2018
4.2.2 1,094 10/1/2018
4.2.1.2 1,105 10/1/2018
4.2.1.1 1,083 9/27/2018
4.2.1 1,023 9/26/2018
4.2.0.5 1,081 9/26/2018
4.2.0.4 1,063 9/25/2018
4.2.0.3 1,095 9/25/2018
4.2.0.2 1,112 9/25/2018
4.2.0.1 1,072 9/25/2018
4.2.0 1,199 9/24/2018
4.1.0 1,047 9/21/2018
4.0.0.6 1,082 9/18/2018
4.0.0.5 1,117 9/18/2018
4.0.0.4 1,090 9/17/2018
4.0.0.3 3,478 9/7/2018
4.0.0.2 1,372 9/4/2018
4.0.0.1 1,490 9/4/2018
4.0.0 4,298 8/30/2018
3.2.0 2,994 8/28/2018
3.1.0 1,086 8/28/2018
3.0.6 2,700 8/27/2018
3.0.5 1,067 8/27/2018
3.0.4 1,111 8/27/2018
3.0.3 1,103 8/24/2018
3.0.2 1,310 8/24/2018
3.0.1.2 1,089 8/23/2018
3.0.1.1 1,147 8/21/2018
3.0.1 1,103 8/21/2018
3.0.0 2,047 8/16/2018
2.2.1 1,185 8/15/2018
2.2.0 1,142 8/14/2018
2.1.0 1,134 8/13/2018
2.0.2 1,250 8/7/2018
2.0.1 1,622 5/10/2018
2.0.0 2,212 4/26/2018
1.5.3.7 3,531 1/27/2018
1.5.3.6 1,500 1/15/2018
1.5.3.5 1,478 1/8/2018
1.5.3.4 1,478 1/3/2018
1.5.3.3 1,503 1/3/2018
1.5.3.2 1,484 12/27/2017
1.5.3.1 1,511 12/25/2017
1.5.3 1,450 12/25/2017
1.5.2 1,470 12/24/2017
1.5.1 1,498 12/23/2017
1.5.0 1,439 12/22/2017
1.4.7 1,219 12/2/2017
1.4.6 2,852 11/28/2017
1.4.5 1,407 11/28/2017
1.4.0 1,472 11/12/2017
1.3.5 4,147 11/8/2017
1.3.4 1,483 11/8/2017
1.3.3 1,545 11/2/2017
1.3.2 1,481 11/2/2017
1.3.1 1,511 9/12/2017
1.3.0 1,428 8/26/2017
1.2.1 1,307 8/23/2017
1.2.0 1,383 8/17/2017
1.1.1 1,310 8/17/2017
1.1.0 1,310 8/17/2017
1.0.0 2,129 8/12/2017

Added new SVG media type.