ToolBX.Unicity 2.2.0

dotnet add package ToolBX.Unicity --version 2.2.0
NuGet\Install-Package ToolBX.Unicity -Version 2.2.0
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="ToolBX.Unicity" Version="2.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ToolBX.Unicity --version 2.2.0
#r "nuget: ToolBX.Unicity, 2.2.0"
#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.
// Install ToolBX.Unicity as a Cake Addin
#addin nuget:?package=ToolBX.Unicity&version=2.2.0

// Install ToolBX.Unicity as a Cake Tool
#tool nuget:?package=ToolBX.Unicity&version=2.2.0

Unicity

Unicity

Extensions for auto-incrementing numbers in non-database settings.

Major updates

As of 2.1.0, Unicity's methods use generic maths and therefore (should) support all base numeric types. This was previously limited to System.Int32.

Gettings started

With IAutoIncrementedId<T>

//The IAutoIncrementedId<T> interface forces your implementing types to have a T Id with a get accessor
public record YourClass : IAutoIncrementedId<int>
{
	public int Id { get; init; }
	...
}
//Will get the next available number from the _items collection or `0`
var yourObject = new YourClass 
{ 
	Id = _items.GetNextAvailableIdOrDefault();
	...
};
//Or if you don't like `0` as a `defaultValue`, you can set it to something else like `1`
var yourObject = new YourClass
{ 
	Id = _items.GetNextAvailableIdOrDefault(1);
	...
};

Without IAutoIncrementedId<T>

Maybe you don't have control over YourClass or maybe you don't want to use the IAutoIncrementedId<int> interface. You can use the GetNextAvailableIdOrDefault method for those casse.

public record YourClass
{
	public int Number { get; init; }
	...
}
//This will give you the largest `Number` property in the collection `+ 1` or `0`
var yourOtherObject = new YourClassWithoutId
{
	Number = _otherItems.GetNextAvailableNumberOrDefault(x => x.Number)
}
//You can also specify a `defaultValue` if you don't like `0` (`5` in this case)
var yourOtherObject = new YourClassWithoutId
{
	Number = _otherItems.GetNextAvailableNumberOrDefault(x => x.Number, 5)
}

Breaking changes

2.1.X → 2.2.0 (July 2023)

Method GetNextAvailableId is renamed to GetNextAvailableIdOrDefault which includes an optional defaultValue of 0. Both methods are supported as of 2.1.0 to facilitate the move.

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net7.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on ToolBX.Unicity:

Package Downloads
ToolBX.Spritebound

Spritesheet and animation management for sprite-based projects.

ToolBX.SimpleRepositories

Base classes and interfaces for setting up simple repositories.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.2.0 326 1/11/2024
2.2.0-beta1 139 11/18/2023
2.1.0 301 5/4/2023
2.1.0-beta3 115 4/29/2023
2.1.0-beta2 88 4/28/2023
2.1.0-beta1 100 4/28/2023
2.0.2 189 4/28/2023
2.0.1 218 4/24/2023
2.0.0 438 11/9/2022
2.0.0-beta1 170 10/2/2022
1.0.2 1,790 10/2/2022
1.0.1 359 9/6/2022
1.0.0 1,419 5/23/2022