Identifier 1.0.0
dotnet add package Identifier --version 1.0.0
NuGet\Install-Package Identifier -Version 1.0.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="Identifier" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Identifier" Version="1.0.0" />
<PackageReference Include="Identifier" />
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 Identifier --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Identifier, 1.0.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.
#:package Identifier@1.0.0
#: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=Identifier&version=1.0.0
#tool nuget:?package=Identifier&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Identifier
A collection of Id algorithms for c#
Snowflake
Snowflake is a versatile algorithm to create 64 bit id's composed of a time, a generator and a sequence part. This implementation allows to configure the amount of bits which ca be used for the specific parts of the id.
using Identifier.Snowflake;
using System;
class Program
{
static void Main(string[] args)
{
// Let's say we take 1st january 2020 as our epoch
DateTime epoch = new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc);
// Create an ID with 42 bits for timestamp, 6 for generator-id and 15 for sequence
SnowflakeConfig config = new SnowflakeConfig(42, 6, 15, epoch);
// Create an IdGenerator with it's generator-id set to 0 and our custom snowflake config
SnowflakeId generator = new SnowflakeId(0, config);
// Let's ask the config how many milliseconds we could use
// in this setup (42 bits)
Console.WriteLine("Max. milliseconds : {0}", config.MaxMilliseconds);
// Let's ask the config how many generators we could instantiate
// in this setup (6 bits)
Console.WriteLine("Max. generators : {0}", config.MaxGenerators);
// Let's ask the config how many sequential Id's we could generate
// in a single ms in this setup (15 bits)
Console.WriteLine("Id's/ms per generator : {0}", config.MaxSequenceIds);
// Let's calculate the number of Id's we could generate, per ms, should we use
// the maximum number of generators
Console.WriteLine("Id's/ms total : {0}", config.MaxGenerators * config.MaxSequenceIds);
// Let's ask the config configuration for how long we could generate Id's before
// we experience a 'wraparound' of the timestamp
Console.WriteLine("Wraparound interval : {0}", config.WraparoundInterval());
// And finally: let's ask the config when this wraparound will happen
// (we'll have to tell it the generator's epoch)
Console.WriteLine("Wraparound date : {0}", config.WraparoundDate());
}
}
Output:
Max. milliseconds : 4398046511104
Max. generators : 64
Id's/ms per generator : 32768
Id's/ms total : 2097152
Wraparound interval : 50903.07:35:11.1040000
Wraparound date : 15.05.2139 07:35:11
| 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. 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 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.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.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 148 | 10/7/2025 |
| 1.0.0-beta | 382 | 5/3/2021 |
Release notes at https://github.com/teian/Identifier/releases