Pergunta

Eu li recentemente sobre a biblioteca boost::statechart (máquinas de estados finitos) e eu amei o conceito.

A C # tem um mecanismo semelhante? Ou ele pode ser implementado usando um padrão de design específico?

Foi útil?

Solução

Sim, C # tem iteradoras blocos que são máquinas de estado gerado pelo compilador.

Se você deseja implementar você próprio máquina de estado pode criar implementações personalizadas das interfaces IEnumerable<T> e IEnumerator<T>.

Ambas as abordagens destacar a implementação do framework .NET da iterador padrão .

Outras dicas

.NET 4 Update 1 agora suporta-lo na seguinte classe: System.Activities.Statements.StateMachine

Aqui é um tutorial sobre como usá-lo . Eis mãos em laboratório .

Workflow Foundation (.NET 3.0) tem um fluxo de trabalho de máquina de estado. 4.0 não tem exatamente a mesma coisa no momento, mas você pode definitivamente criar uma máquina de estado de fluxo de trabalho usando 4.0.

Eu mantenho um projeto de código aberto que implementa (entre outras coisas) uma máquina de estado finito genérico para .NET. Ele é construído em cima QuickGraph , para que você obtenha muitos algoritmos gráfico de análise de forma gratuita.

desta página para obter mais informações sobre o projeto e, especificamente, " Jolt.Automata: Finite State Machines " para obter mais informações sobre o recurso

Confira Stateless -> http://code.google.com/p/stateless/. É uma alternativa leve para o WWF mais pesado.

Aqui está um par de artigos pelo autor da ferramenta:

Estado Machines em modelos de domínio

parametrizado Triggers e Re-entrantes Unidos em Stateless

As coisas que se aproximam FSMs são fluxos de trabalho no .NET 3.5, no entanto, também os fluxos de trabalho não são exatamente FSMs.

O poder de usar FSMs é que você pode criá-los explicitamente em seu código, ter menos chance de criar bugs. Além, é claro, alguns sistemas são FSMs por natureza, por isso é mais natural para o código-los como tal.

Windows Workflow Foundation (WF), que faz parte da biblioteca de classe base em 3.0 e 3.5 inclui um estado-máquina de fluxo de trabalho de projeto para gerenciar máquinas de estado para as suas aplicações.

Eles têm fluxo de trabalho reescrito completamente para a próxima versão 4.0, e as novas classes WF 4.0 não suporta nativamente o estado-máquinas, mas todas as classes 3.0 / 3.5 ainda são totalmente suportados sob 4.0.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top