C#状态机Stateless 使用
Posted DotNet开发跳槽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#状态机Stateless 使用相关的知识,希望对你有一定的参考价值。
最近在折腾一些控制相关的软件设计,想起来状态机这个东西,对解决一些控制系统状态切换还是挺有用的。
状态机(有限状态自动机)网上有很多介绍。简单理解就是定义一系列状态,通过一系列的事件,可以使得状态可以相互之间切换。
如果不使用状态机的思想来编程,那么针对过程的编程方法会使得程序拓展性变差,并且不容易调试。而状态机只需要定义好了各种状态和状态切换之间的事件,你只管触发事件,剩下的事情它自己就自动完成了(毕竟名称叫做有限状态自动机),这对于很多需要定义各种控制阶段的系统简直是完美适配。了解到.NET也有很多库可以实现这些功能,本文主要介绍一下Stateless的应用。
Stateless介绍
Stateless可以创建极简的状态机与对应的工作流。很多项目(包括VisualStudio Extension、AIlab)都有使用到它。
它支持以下特性:
支持各种类型作为状态和触发事件
支持状态继承
支持状态进入/离开事件
支持条件状态转移
支持状态/转移查询
也有几点需要注意的:
它支持异步语法,但是它是单线程的,不是线程安全的。
可以导出DOT graph
安装起来很简单,直接在nuget中安装即可:
Copy以上是关于C#状态机Stateless 使用的主要内容,如果未能解决你的问题,请参考以下文章
Flutter - Stateful(有状态) 和 stateless(无状态) widgets