Stateless 5.16.0-dev-12479904394
See the version list below for details.
dotnet add package Stateless --version 5.16.0-dev-12479904394
NuGet\Install-Package Stateless -Version 5.16.0-dev-12479904394
<PackageReference Include="Stateless" Version="5.16.0-dev-12479904394" />
<PackageVersion Include="Stateless" Version="5.16.0-dev-12479904394" />
<PackageReference Include="Stateless" />
paket add Stateless --version 5.16.0-dev-12479904394
#r "nuget: Stateless, 5.16.0-dev-12479904394"
#:package Stateless@5.16.0-dev-12479904394
#addin nuget:?package=Stateless&version=5.16.0-dev-12479904394&prerelease
#tool nuget:?package=Stateless&version=5.16.0-dev-12479904394&prerelease
Stateless
Create state machines and lightweight state machine-based workflows directly in .NET code:
var phoneCall = new StateMachine<State, Trigger>(State.OffHook);
phoneCall.Configure(State.OffHook)
.Permit(Trigger.CallDialled, State.Ringing);
phoneCall.Configure(State.Connected)
.OnEntry(t => StartCallTimer())
.OnExit(t => StopCallTimer())
.InternalTransition(Trigger.MuteMicrophone, t => OnMute())
.InternalTransition(Trigger.UnmuteMicrophone, t => OnUnmute())
.InternalTransition<int>(_setVolumeTrigger, (volume, t) => OnSetVolume(volume))
.Permit(Trigger.LeftMessage, State.OffHook)
.Permit(Trigger.PlacedOnHold, State.OnHold);
// ...
phoneCall.Fire(Trigger.CallDialled);
Assert.AreEqual(State.Ringing, phoneCall.State);
This project, as well as the example above, was inspired by Simple State Machine (Archived).
Features
Most standard state machine constructs are supported:
- Generic support for states and triggers of any .NET type (numbers, strings, enums, etc.)
- Hierarchical states
- Entry/exit actions for states
- Guard clauses to support conditional transitions
- Introspection
Some useful extensions are also provided:
- Ability to store state externally (for example, in a property tracked by an ORM)
- Parameterised triggers
- Reentrant states
- Export to DOT graph
Documentation
For guidance on how to use Stateles, the project README file contains documentation and code examples. The source repository also includes a few example projects.
Contributing
We welcome contributions to this project. Check CONTRIBUTING.md for more info.
| 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 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 was computed. |
| .NET Framework | net461 was computed. net462 is compatible. 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. |
-
.NETFramework 4.6.2
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (68)
Showing the top 5 NuGet packages that depend on Stateless:
| Package | Downloads |
|---|---|
|
LittleForker
A utility to assist with spawing child processes, monitor their lifecycle and co-operative shutdown. |
|
|
DiegoRangel.DotNet.Framework.CQRS.Domain.Core
A common library for implementing CQRS based Domain layer. |
|
|
RedoSocial.Platform.ViewModels.Rx
Package Description |
|
|
Hyperledger.Aries
.NET Core tools for building agent services |
|
|
WalletFramework
.NET Core tools for building agent services |
GitHub repositories (15)
Showing the top 15 popular GitHub repositories that depend on Stateless:
| Repository | Stars |
|---|---|
|
microsoft/ailab
Experience, Learn and Code the latest breakthrough innovations with Microsoft AI
|
|
|
github/VisualStudio
GitHub Extension for Visual Studio
|
|
|
sipsorcery-org/sipsorcery
A WebRTC, SIP and VoIP library for C# and .NET. Designed for real-time communications apps.
|
|
|
Azure/iotedge
The IoT Edge OSS project
|
|
|
fagenorn/handcrafted-persona-engine
An AI-powered interactive avatar engine using Live2D, LLM, ASR, TTS, and RVC. Ideal for VTubing, streaming, and virtual assistant applications.
|
|
|
dotnetGame/MineCase
Minecraft server based on Orleans
|
|
|
pardahlman/RawRabbit
A modern .NET framework for communication over RabbitMq
|
|
|
NimbleSense/Susalem
加入带锅宫酱,来到苏州耶路撒冷的怀抱吧!
|
|
|
JasonBock/Rocks
A mocking library based on the Compiler APIs (Roslyn + Mocks)
|
|
|
CrossGeeks/xUber
Uber Clone using Xamarin Forms
|
|
|
DynamicTranslator/DynamicTranslator
Instant translation application for windows in .NET :circus_tent:
|
|
|
damianh/LittleForker
A .NET utility library to spawn, supervise and (optionally) cleanly shut down child processes.
|
|
|
mrsalmon1976/Stateless.WorkflowEngine
Basic .NET workflow engine based on the awesome stateless State Machine.
|
|
|
Kaioru/Edelstein
A v.95.1 Mushroom game server emulator written in C# .NET
|
|
|
Enzx/NxGraph
NxGraph is a zero-allocation runtime, high-performance finite state machine (FSM) framework for .NET 8+, designed for scenarios where execution speed, memory efficiency, and runtime safety are critical.
|
| Version | Downloads | Last Updated |
|---|---|---|
| 5.20.1-dev-19407615528 | 257 | 11/16/2025 |
| 5.20.1-dev-19407520956 | 215 | 11/16/2025 |
| 5.20.0 | 180,778 | 9/18/2025 |
| 5.20.0-dev-17841589139 | 306 | 9/18/2025 |
| 5.19.0 | 83,354 | 8/22/2025 |
| 5.19.0-dev-17621326750 | 310 | 9/18/2025 |
| 5.19.0-dev-17157499513 | 139 | 8/22/2025 |
| 5.18.0 | 86,871 | 8/3/2025 |
| 5.18.0-dev-17151133875 | 152 | 8/22/2025 |
| 5.18.0-dev-17151048893 | 148 | 8/22/2025 |
| 5.18.0-dev-17123170070 | 173 | 8/21/2025 |
| 5.18.0-dev-16986834496 | 165 | 8/15/2025 |
| 5.18.0-dev-16665478063 | 125 | 8/1/2025 |
| 5.18.0-dev-16665368567 | 134 | 8/1/2025 |
| 5.17.0 | 1,757,533 | 12/30/2024 |
| 5.17.0-dev-16123181037 | 186 | 7/7/2025 |
| 5.17.0-dev-12573353197 | 205 | 1/1/2025 |
| 5.17.0-dev-12536414383 | 197 | 12/29/2024 |
| 5.16.0 | 2,154,398 | 5/24/2024 |
| 5.16.0-dev-9828500365 | 231 | 7/7/2024 |
| 5.16.0-dev-9514287026 | 199 | 6/14/2024 |
| 5.16.0-dev-9221217254 | 201 | 5/24/2024 |
| 5.16.0-dev-12536374438 | 157 | 12/29/2024 |
| 5.16.0-dev-12479904394 | 153 | 12/24/2024 |
| 5.16.0-dev-12470918423 | 170 | 12/23/2024 |
| 5.16.0-dev-12470449205 | 178 | 12/23/2024 |
| 5.16.0-dev-10048603300 | 205 | 7/22/2024 |
| 5.15.0 | 1,650,796 | 12/29/2023 |
| 5.15.0-dev-9171714096 | 191 | 5/21/2024 |
| 5.15.0-dev-9058520056 | 205 | 5/13/2024 |
| 5.15.0-dev-8822304149 | 189 | 4/24/2024 |
| 5.15.0-dev-8790594175 | 209 | 4/22/2024 |
| 5.15.0-dev-8759383160 | 202 | 4/19/2024 |
| 5.15.0-dev-7356157229 | 519 | 12/29/2023 |
| 5.14.0 | 478,478 | 11/14/2023 |
| 5.14.0-dev-7355700004 | 485 | 12/29/2023 |
| 5.14.0-dev-7309801955 | 505 | 12/23/2023 |
| 5.14.0-dev-7232734414 | 515 | 12/16/2023 |
| 5.14.0-dev-7232709282 | 532 | 12/16/2023 |
| 5.14.0-dev-7164312319 | 564 | 12/11/2023 |
| 5.14.0-dev-7078872236 | 555 | 12/3/2023 |
| 5.14.0-dev-7078811950 | 537 | 12/3/2023 |
| 5.14.0-dev-6860395514 | 583 | 11/14/2023 |
| 5.14.0-dev-6851669594 | 549 | 11/13/2023 |
| 5.14.0-dev-6851630770 | 555 | 11/13/2023 |
| 5.14.0-dev-6823242034 | 1,054 | 11/10/2023 |
| 5.14.0-dev-6813247520 | 581 | 11/9/2023 |
| 5.14.0-dev-6811706736 | 500 | 11/9/2023 |
| 5.14.0-dev-6801352798 | 557 | 11/8/2023 |
| 5.13.0 | 2,562,762 | 12/29/2022 |
| 5.13.0-dev-6799430915 | 524 | 11/8/2023 |
| 5.13.0-dev-6746401636 | 548 | 11/7/2023 |
| 5.13.0-dev-5455458583 | 903 | 7/4/2023 |
| 5.13.0-dev-5455401408 | 743 | 7/4/2023 |
| 5.13.0-dev-5235510771 | 764 | 6/11/2023 |
| 5.13.0-dev-5157129238 | 807 | 6/2/2023 |
| 5.13.0-dev-4941000713 | 979 | 5/10/2023 |
| 5.13.0-dev-4940972813 | 953 | 5/10/2023 |
| 5.13.0-dev-4838097297 | 775 | 4/29/2023 |
| 5.13.0-dev-4838091545 | 814 | 4/29/2023 |
| 5.13.0-dev-4838052982 | 773 | 4/29/2023 |
| 5.13.0-dev-4832488606 | 789 | 4/28/2023 |
| 5.13.0-dev-4716514070 | 780 | 4/17/2023 |
| 5.13.0-dev-4701624597 | 820 | 4/14/2023 |
| 5.13.0-dev-4701061956 | 795 | 4/14/2023 |
| 5.13.0-dev-4027208421 | 825 | 1/27/2023 |
| 5.13.0-dev-4027203589 | 851 | 1/27/2023 |
| 5.13.0-dev-4027201259 | 855 | 1/27/2023 |
| 5.13.0-dev-3800477155 | 790 | 12/29/2022 |
| 5.12.0 | 928,983 | 10/17/2022 |
| 5.12.0-dev-3553426836 | 834 | 11/26/2022 |
| 5.12.0-dev-3498786305 | 807 | 11/18/2022 |
| 5.12.0-dev-3267018252 | 845 | 10/17/2022 |
| 5.11.0 | 4,951,093 | 4/28/2021 |
| 5.11.0-dev-3264102134 | 795 | 10/17/2022 |
| 5.11.0-dev-3191463566 | 808 | 10/17/2022 |
| 5.10.1 | 494,379 | 2/17/2021 |
| 5.10.1-dev-791423646 | 1,019 | 4/28/2021 |
| 5.10.1-dev-787896296 | 1,017 | 4/27/2021 |
| 5.10.1-dev-787889564 | 1,037 | 4/27/2021 |
| 5.10.1-dev-574334224 | 1,049 | 2/17/2021 |
| 5.10.0 | 5,532 | 2/14/2021 |
| 5.10.0-dev-560201439 | 995 | 2/12/2021 |
| 5.10.0-dev-560186344 | 1,023 | 2/12/2021 |
| 5.10.0-dev-542672901 | 1,169 | 2/6/2021 |
| 5.10.0-dev-542661127 | 1,053 | 2/6/2021 |
| 5.2.0 | 6,390 | 2/15/2021 |
| 5.2.0-dev-568743626 | 1,075 | 2/15/2021 |
| 5.1.9-dev-00610 | 1,071 | 2/6/2021 |
| 5.1.9-dev-00600 | 1,069 | 1/31/2021 |
| 5.1.8 | 610,682 | 1/13/2021 |
| 5.1.8-dev-00558 | 1,051 | 1/16/2021 |
| 5.1.8-dev-00553 | 1,062 | 1/13/2021 |
| 5.1.7 | 29,333 | 1/10/2021 |
| 5.1.7-dev-00548 | 1,126 | 1/10/2021 |
| 5.1.6 | 3,588 | 1/10/2021 |
| 5.1.6-dev-00547 | 1,125 | 1/10/2021 |
| 5.1.6-dev-00544 | 1,093 | 1/10/2021 |
| 5.1.5 | 569,858 | 11/17/2020 |
| 5.1.5-dev-00528 | 1,079 | 11/17/2020 |
| 5.1.4 | 98,156 | 11/7/2020 |
| 5.1.4-dev-00522 | 1,118 | 11/7/2020 |
| 5.1.4-dev-00521 | 1,141 | 11/7/2020 |
| 5.1.3 | 1,368,409 | 8/13/2020 |
| 5.1.3-dev-00520 | 1,197 | 11/7/2020 |
| 5.1.3-dev-00513 | 1,143 | 8/12/2020 |
| 5.1.2 | 715,621 | 4/27/2020 |
| 5.1.2-dev-00508 | 1,076 | 8/12/2020 |
| 5.1.2-dev-00501 | 1,143 | 4/27/2020 |
| 5.1.1 | 186,771 | 4/3/2020 |
| 5.1.1-dev-00500 | 1,187 | 4/27/2020 |
| 5.1.1-dev-00499 | 1,142 | 4/27/2020 |
| 5.1.1-dev-00492 | 1,197 | 4/3/2020 |
| 5.1.0 | 55,429 | 3/28/2020 |
| 5.1.0-dev-00489 | 1,186 | 4/3/2020 |
| 5.1.0-dev-00486 | 1,178 | 4/3/2020 |
| 5.1.0-dev-00485 | 1,200 | 4/3/2020 |
| 5.1.0-dev-00481 | 1,198 | 3/26/2020 |
| 5.1.0-dev-00480 | 1,202 | 3/26/2020 |
| 5.1.0-dev-00479 | 1,118 | 3/25/2020 |
| 5.1.0-dev-00478 | 1,169 | 3/25/2020 |
| 5.1.0-dev-00477 | 1,120 | 3/24/2020 |
| 5.0.0 | 258,157 | 2/29/2020 |
| 5.0.0-dev-00476 | 1,163 | 3/24/2020 |
| 5.0.0-dev-00473 | 1,166 | 3/13/2020 |
| 5.0.0-dev-00472 | 1,150 | 3/13/2020 |
| 5.0.0-dev-00471 | 1,157 | 3/13/2020 |
| 5.0.0-dev-00464 | 1,180 | 2/27/2020 |
| 5.0.0-dev-00463 | 1,252 | 2/27/2020 |
| 4.4.0 | 267,786 | 2/7/2020 |
| 4.4.0-dev-00453 | 1,241 | 2/6/2020 |
| 4.4.0-dev-00451 | 1,203 | 2/6/2020 |
| 4.4.0-dev-00450 | 1,167 | 2/6/2020 |
| 4.4.0-dev-00447 | 1,202 | 2/6/2020 |
| 4.4.0-dev-00445 | 1,140 | 2/6/2020 |
| 4.4.0-dev-00443 | 1,482 | 2/6/2020 |
| 4.3.0 | 272,362 | 11/18/2019 |
| 4.2.1 | 3,574,894 | 6/2/2018 |
| 4.2.0 | 22,591 | 6/1/2018 |
| 4.2.0-dev-00366 | 1,934 | 6/2/2018 |
| 4.2.0-dev-00364 | 1,773 | 6/1/2018 |
| 4.2.0-dev-00363 | 1,973 | 6/1/2018 |
| 4.2.0-dev-00360 | 1,961 | 6/1/2018 |
| 4.2.0-dev-00355 | 2,102 | 5/31/2018 |
| 4.2.0-dev-00350 | 2,064 | 5/28/2018 |
| 4.2.0-dev-00349 | 2,068 | 5/28/2018 |
| 4.1.0 | 42,422 | 5/18/2018 |
| 4.1.0-dev-00341 | 1,986 | 5/18/2018 |
| 4.1.0-dev-00340 | 1,924 | 5/18/2018 |
| 4.1.0-dev-00337 | 1,974 | 5/18/2018 |
| 4.1.0-dev-00331 | 2,158 | 5/15/2018 |
| 4.1.0-dev-00326 | 1,809 | 5/14/2018 |
| 4.1.0-dev-00319 | 4,272 | 5/11/2018 |
| 4.1.0-dev-00316 | 1,817 | 5/11/2018 |
| 4.1.0-dev-00311 | 2,070 | 5/7/2018 |
| 4.1.0-dev-00307 | 2,002 | 5/4/2018 |
| 4.1.0-dev-00299 | 1,838 | 4/27/2018 |
| 4.0.1-dev-00294 | 2,246 | 4/24/2018 |
| 4.0.1-dev-00275 | 13,450 | 3/24/2018 |
| 4.0.1-dev-00260 | 7,435 | 10/18/2017 |
| 4.0.1-dev-00258 | 2,021 | 10/16/2017 |
| 4.0.1-dev-00256 | 2,265 | 10/6/2017 |
| 4.0.0 | 782,566 | 9/30/2017 |
| 4.0.0-dev-00247 | 3,668 | 7/27/2017 |
| 4.0.0-dev-00244 | 3,085 | 6/15/2017 |
| 4.0.0-dev-00242 | 2,205 | 6/13/2017 |
| 4.0.0-dev-00236 | 1,921 | 6/1/2017 |
| 4.0.0-dev-00223 | 1,981 | 5/19/2017 |
| 4.0.0-dev-00221 | 1,871 | 5/17/2017 |
| 4.0.0-dev-00220 | 1,809 | 5/17/2017 |
| 4.0.0-dev-00217 | 3,046 | 5/15/2017 |
| 4.0.0-dev-00196 | 2,391 | 4/6/2017 |
| 4.0.0-dev-00194 | 1,833 | 4/6/2017 |
| 4.0.0-dev-00187 | 1,876 | 4/6/2017 |
| 4.0.0-dev-00177 | 1,999 | 3/24/2017 |
| 4.0.0-dev-00175 | 1,852 | 3/24/2017 |
| 4.0.0-dev-00173 | 1,875 | 3/24/2017 |
| 3.2.0-dev-00170 | 2,302 | 3/24/2017 |
| 3.2.0-dev-00168 | 1,905 | 3/20/2017 |
| 3.2.0-dev-00166 | 2,069 | 2/28/2017 |
| 3.1.1-dev-00165 | 2,169 | 2/28/2017 |
| 3.1.1-dev-00162 | 1,856 | 2/28/2017 |
| 3.1.1-dev-00155 | 1,882 | 2/20/2017 |
| 3.1.1-dev-00152 | 2,041 | 2/7/2017 |
| 3.1.1-dev-00151 | 1,970 | 1/22/2017 |
| 3.1.1-dev-00143 | 1,970 | 1/3/2017 |
| 3.1.1-dev-00141 | 1,988 | 1/2/2017 |
| 3.1.0 | 868,068 | 12/15/2016 |
| 3.0.2-dev-00132 | 2,530 | 12/8/2016 |
| 3.0.1 | 16,547 | 11/23/2016 |
| 3.0.1-dev-00123 | 1,909 | 11/22/2016 |
| 3.0.1-dev-00113 | 2,289 | 11/11/2016 |
| 3.0.0 | 111,708 | 11/3/2016 |
| 3.0.0-dev-00109 | 2,059 | 11/2/2016 |
| 3.0.0-dev-00108 | 1,958 | 11/2/2016 |
| 3.0.0-dev-00106 | 1,939 | 11/2/2016 |
| 3.0.0-dev-00105 | 2,113 | 11/1/2016 |
| 3.0.0-dev-00099 | 2,149 | 10/31/2016 |
| 3.0.0-dev-00094 | 2,885 | 10/3/2016 |
| 3.0.0-dev-00093 | 1,834 | 10/3/2016 |
| 3.0.0-dev-00092 | 1,901 | 10/3/2016 |
| 2.5.84 | 119,099 | 8/23/2016 |
| 2.5.80 | 56,809 | 7/25/2016 |
| 2.5.79 | 79,073 | 7/19/2016 |
| 2.5.68 | 13,349 | 7/1/2016 |
| 2.5.66 | 2,521 | 6/30/2016 |
| 2.5.62 | 25,433 | 3/29/2016 |
| 2.5.61 | 40,802 | 3/22/2016 |
| 2.5.59 | 4,279 | 3/7/2016 |
| 2.5.56 | 19,688 | 2/25/2016 |
| 2.5.53 | 100,266 | 2/3/2016 |
| 2.5.40 | 7,787 | 1/25/2016 |
| 2.5.36 | 23,348 | 12/10/2015 |
| 2.5.29 | 42,248 | 11/7/2015 |
| 2.5.28 | 2,531 | 11/7/2015 |
| 2.5.23 | 4,567 | 10/28/2015 |
| 2.5.21 | 43,449 | 7/6/2015 |
| 2.5.18 | 9,578 | 6/9/2015 |
| 2.5.15 | 13,797 | 4/9/2015 |
| 2.5.11 | 70,587 | 10/26/2014 |
| 2.5.10 | 2,707 | 10/23/2014 |
| 2.5.8 | 7,788 | 10/20/2014 |
| 2.4.0 | 64,550 | 3/19/2013 |
| 2.3.1.1 | 55,011 | 1/7/2011 |