Pregunta

Recientemente leí sobre el boost::statechart biblioteca (máquinas de estados finitos) y me encantó el concepto.

¿C# tiene un mecanismo similar?¿O se puede implementar utilizando un patrón de diseño específico?

¿Fue útil?

Solución

Sí, C# tiene bloques iteradores que son máquinas de estados generadas por el compilador.

Si desea implementar su propia máquina de estados, puede crear implementaciones personalizadas del IEnumerable<T> y IEnumerator<T> interfaces.

Ambos enfoques resaltan la implementación del marco .NET de la patrón iterador.

Otros consejos

.NET 4 Update 1 ahora lo admite en la siguiente clase: System.Activities.Statements.StateMachine

Aquí hay un tutorial sobre cómo usarlo . Aquí hay un manos en el laboratorio .

Workflow Foundation (.NET 3.0) tiene un flujo de trabajo de máquina de estado. 4.0 no tiene exactamente lo mismo actualmente, pero definitivamente puede crear un flujo de trabajo de máquina de estado usando 4.0.

Mantengo un proyecto de código abierto que implementa (entre otras cosas) una máquina genérica de estados finitos para .NET. Está construido sobre QuickGraph , por lo que obtienes muchos algoritmos de análisis de gráficos gratis.

Consulte esta página para obtener más información sobre el proyecto, y específicamente " Jolt.Automata: Finite State Machines " para obtener más información sobre la función.

Echa un vistazo a Stateless - > http://code.google.com/p/stateless/ . Es una alternativa ligera al WWF más pesado.

Aquí hay un par de artículos del autor de la herramienta:

Máquinas de estado en modelos de dominio

Activadores parametrizados y estados reentrantes en apátridas

Las cosas que se acercan a los FSM son flujos de trabajo en .NET 3.5, sin embargo, también los flujos de trabajo no son exactamente FSM.

El poder de usar FSMs es que puedes crearlos explícitamente en tu código, teniendo menos posibilidades de crear errores. Además, por supuesto, algunos sistemas son FSM por naturaleza, por lo que es más natural codificarlos así.

Windows Workflow Foundation (WF) que forma parte de la biblioteca de clases base en 3.0 y 3.5 incluye un diseño de flujo de trabajo de máquina de estado para administrar máquinas de estado para sus aplicaciones.

Han reescrito completamente el flujo de trabajo para la próxima versión 4.0, y las nuevas clases WF 4.0 no admiten máquinas de estado de forma nativa, pero todas las clases 3.0 / 3.5 todavía son totalmente compatibles con 4.0.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top