我最近读到有关boost::statechart
库(有限状态机),我喜欢这个概念。
C#有类似的机制? 或者,可以在使用特定的设计模式来实现?
我最近读到有关boost::statechart
库(有限状态机),我喜欢这个概念。
C#有类似的机制? 或者,可以在使用特定的设计模式来实现?
是的,C#有迭代器块 ,其是编译器生成的状态机。
如果你想实现你自己的状态机,您可以创建自定义实现IEnumerable<T>
和IEnumerator<T>
接口。
这两种方法都突出了.NET Framework的执行的迭代器模式 。
现在.NET 4 Update 1支持它在下面的类: System.Activities.Statements.StateMachine
下面是一个关于如何使用它的教程 。 这里有一个手在实验室 。
工作流基础(.NET 3.0)有一个状态机工作流。 4.0不具有完全相同目前同样的事情,但你绝对可以创建使用4.0状态机工作流。
我维护它实现(除其他事项外)的通用有限状态机用于.NET的开源项目。 它是建立在之上QuickGraph ,让你得到很多图形分析算法是免费的。
请参阅此页 “了解有关该项目的更多信息,并明确:有限状态机Jolt.Automata有关功能的详细信息”。
退房无状态- > http://code.google.com/p/stateless/ 。 它是一种轻量级替代较重WWF。
这里有一对夫妇,此工具的作者的文章:
在领域模型状态机
参数化触发器和重入国无状态
那亲近的FSM的事情是在.NET 3.5的工作流程,然而,也工作流程是不完全的有限状态机。
利用有限状态机的功率是,你可以在你的代码中显式创建它们,有较少的错误创造机会。 此外,当然有些系统在本质上的有限状态机,所以它是更加自然,像这样的代码。
Windows工作流基础(WF)是在3.0和3.5的基类库的一部分,包括状态机工作流设计管理国家机器为您的应用程序。
他们已经完全重写的工作流程为即将到来的4.0版本,而新的WF 4.0类本身并不支持状态机,但所有3.0 / 3.5类仍然完全在4.0的支持。