Вопрос

Я недавно читал о библиотеке boost::statechart (конечных автоматах), и мне понравилась эта концепция.

Есть ли в C # похожий механизм? Или это может быть реализовано с использованием определенного шаблона проектирования?

Это было полезно?

Решение

Да, в C # есть блоки итераторов , которые являются конечными автоматами, сгенерированными компилятором.

Если вы хотите реализовать собственный конечный автомат, вы можете создавать собственные реализации интерфейсов IEnumerable<T> и IEnumerator<T>.

Оба этих подхода подчеркивают реализацию шаблона итератора .NET Framework . р>

Другие советы

.NET 4 Update 1 теперь поддерживает его в следующем классе: System.Activities.Statements.StateMachine р>

Вот руководство по его использованию . Вот практические занятия .

Workflow Foundation (.NET 3.0) имеет рабочий процесс конечного автомата. В настоящее время 4.0 не имеет точно такой же вещи, но вы определенно можете создать рабочий процесс конечного автомата, используя 4.0.

Я поддерживаю проект с открытым исходным кодом, который реализует (среди прочего) универсальный конечный автомат для .NET. Он построен на основе QuickGraph , поэтому вы получаете множество алгоритмов анализа графиков бесплатно.

Смотрите эту страницу для получения дополнительной информации о проекте и, в частности, " Jolt.Automata: конечные автоматы " для получения дополнительной информации о функции.

Выезд без гражданства - > http://code.google.com/p/stateless/ . Это легкая альтернатива более тяжелому WWF.

Вот пара статей автора инструмента:

конечные автоматы в моделях доменов

Параметризованные триггеры и входящие состояния в лицах без гражданства

То, что приближается к FSM, - это рабочие процессы в .NET 3.5, однако также рабочие процессы не являются точно FSM.

Сила использования FSM заключается в том, что вы можете явно создавать их в своем коде, что дает меньше шансов на создание ошибок. Кроме того, конечно, некоторые системы по своей природе являются FSM, поэтому более естественно кодировать их так.

Windows Workflow Foundation (WF), который является частью библиотеки базовых классов в 3.0 и 3.5, включает в себя дизайн рабочего процесса конечного автомата для управления конечными автоматами для ваших приложений.

Они полностью переписали рабочий процесс для предстоящего выпуска 4.0, и новые классы WF 4.0 не поддерживают машины состояний, но все классы 3.0 / 3.5 все еще полностью поддерживаются в 4.0.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top