29

私は最近、boost::statechartライブラリ (有限状態マシン) について読みましたが、その概念が気に入りました。

C# にも同様のメカニズムがありますか? それとも、特定のデザイン パターンを使用して実装できますか?

4

8 に答える 8

19

.NET 4 Update 1は、次のクラスでサポートされるようになりました: System.Activities.Statements.StateMachine

これは、その使用方法に関するチュートリアルです。これがハンズオンラボです。

于 2011-07-30T11:36:30.263 に答える
8

Workflow Foundation (.NET 3.0)には、ステート マシン ワークフローがあります。4.0 には現在まったく同じものはありませんが、4.0 を使用してステート マシン ワークフローを確実に作成できます。

于 2009-09-10T19:00:26.350 に答える
6

私は、(とりわけ) .NET 用の一般的な有限状態マシンを実装するオープンソース プロジェクトを維持しています。QuickGraphの上に構築されているため、多くのグラフ分析アルゴリズムを無料で利用できます。

プロジェクトの詳細については、このページを参照してください。具体的には、この機能の詳細については、「 Jolt.Automata : Finite State Machines」を参照してください。

于 2009-12-07T20:30:49.013 に答える
6

Stateless を確認してください -> http://code.google.com/p/stateless/。重い WWF に代わる軽量の代替品です。

ツールの作成者によるいくつかの記事を次に示します。

ドメイン モデルのステート マシン

ステートレスでのパラメーター化されたトリガーと再入可能な状態

于 2011-12-06T04:25:13.917 に答える
2

FSM に近いものは .NET 3.5 のワークフローですが、ワークフローも厳密には FSM ではありません。

FSM を使用する利点は、バグを作成する可能性が少なく、コード内で明示的に作成できることです。さらに、もちろん一部のシステムは本質的に FSM であるため、そのようにコーディングする方が自然です。

于 2009-09-10T19:04:09.620 に答える
1

3.0 および 3.5 の基本クラス ライブラリの一部である Windows Workflow Foundation (WF) には、アプリケーションのステート マシンを管理するためのステート マシン ワークフロー設計が含まれています。

今後の 4.0 リリースに向けてワークフローを完全に書き直しました。新しい WF 4.0 クラスはステートマシンをネイティブにサポートしていませんが、3.0/3.5 クラスはすべて 4.0 でも完全にサポートされています。

于 2009-12-07T20:52:09.073 に答える
0

はい、C# には、コンパイラによって生成されたステート マシンである イテレータ ブロックがあります。

独自のステート マシンを実装する場合は、IEnumerable<T>およびIEnumerator<T>インターフェイスのカスタム実装を作成できます。

これらのアプローチは両方とも、.NET フレームワークの反復子パターンの実装を強調しています。

于 2009-09-10T18:43:37.130 に答える