C#には有限状態マシンが含まれていますか?
-
05-07-2019 - |
質問
最近boost::statechart
ライブラリ(有限状態マシン)について読んだことがあり、このコンセプトが気に入りました。
C#にも同様のメカニズムがありますか?または、特定の設計パターンを使用して実装できますか?
解決
はい、C#にはがありますコンパイラによって生成された状態マシンであるイテレータブロック。
独自のステートマシンを実装する場合は、IEnumerable<T>
およびIEnumerator<T>
インターフェイスのカスタム実装を作成できます。
これらのアプローチはいずれも、.NETフレームワークのイテレータパターンの実装を強調しています。 p>
他のヒント
.NET 4 Update 1は、次のクラスでサポートするようになりました。 System.Activities.Statements.StateMachine
使用方法のチュートリアルです。 ハンズオンラボをご覧ください。
Workflow Foundation (.NET 3.0)にはステートマシンワークフローがあります。 4.0には現在、まったく同じものはありませんが、4.0を使用してステートマシンワークフローを確実に作成できます。
.NET用の一般的な有限状態マシンを(特に)実装するオープンソースプロジェクトを維持しています。 QuickGraph の上に構築されているため、多くのグラフ分析アルゴリズムを無料で入手できます。
プロジェクトの詳細については、このページ、特に<!> quot; Jolt.Automata:有限状態マシン <!> quot;機能の詳細については。
ステートレスをチェックアウト-<!> gt; http://code.google.com/p/stateless/ 。重いWWFに代わる軽量な代替品です。
ツールの作成者による記事がいくつかあります:
FSMに近づいているのは.NET 3.5のワークフローですが、ワークフローも厳密にはFSMではありません。
FSMを使用すると、コード内でFSMを明示的に作成できるため、バグが発生する可能性が低くなります。それにもちろん、一部のシステムは本質的にFSMであるため、そのようにコーディングする方が自然です。
3.0および3.5の基本クラスライブラリの一部であるWindows Workflow Foundation(WF)には、アプリケーションのステートマシンを管理するステートマシンワークフロー設計が含まれています。
次期4.0リリースのワークフローを完全に書き直しました。新しいWF 4.0クラスはステートマシンをネイティブにサポートしていませんが、3.0 / 3.5クラスはすべて4.0で完全にサポートされています。