我最近读过关于boost::statechart库(有限状态机)的文章,我很喜欢这个概念。

C#是否有类似的机制?或者可以使用特定的设计模式实现吗?

有帮助吗?

解决方案

是的,C#有迭代器块是编译器生成的状态机。

如果您希望实现自己的状态机,可以创建IEnumerable<T>IEnumerator<T>接口的自定义实现。

这两种方法都突出了.NET框架对迭代器模式的实现。

其他提示

.NET 4 Update 1现在支持以下类: System.Activities.Statements.StateMachine

以下是如何使用它的教程。 这是一个动手实验室

Workflow Foundation (.NET 3.0)具有状态机工作流程。 4.0目前没有完全相同的东西,但你绝对可以使用4.0创建一个状态机工作流程。

我维护了一个开源项目,该项目实现了.NET的通用有限状态机(除此之外)。它建立在 QuickGraph 之上,因此您可以免费获得许多图形分析算法。

有关该项目的更多信息,请参见此页,特别是<!> quot; Jolt.Automata:有限状态机 <!> quot;有关该功能的更多信息。

查看Stateless - <!> gt; http://code.google.com/p/stateless/ 。它是重型WWF的轻量级替代品。

以下是该工具的作者的几篇文章:

State Machines在域模型中

无状态的参数化触发器和重入状态

接近FSM的是.NET 3.5中的工作流程,但是,工作流程也不完全是FSM。

使用FSM的强大之处在于,您可以在代码中创建显式,从而减少创建错误的机会。此外,当然有些系统本质上是FSM,所以对它们进行编码就更自然了。

Windows Workflow Foundation(WF)是3.0和3.5中基类库的一部分,它包括一个状态机工作流设计,用于管理应用程序的状态机。

他们已完全重写了即将发布的4.0版本的工作流程,而新的WF 4.0类本身并不支持状态机,但4.0版本仍然完全支持所有3.0 / 3.5类。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top