Существует ли простой генератор кода .NET для конечного автомата, управляемого событиями? - PullRequest
2 голосов
/ 13 сентября 2010

Существует ли простой генератор кода .NET для конечного автомата, управляемого событиями?

Я устал делать это вручную для объектов пользовательского интерфейса. Мне просто нужно определение enum, оператор switch и каждый вызов функции. Мне не нужна "библиотека".

См. Управляемый событиями конечный автомат в http://en.wikipedia.org/wiki/Event_driven_finite_state_machine.

Конечные автоматы в C # 3.0 с использованием шаблонов T4 в http://aabs.wordpress.com/2008/06/26/state-machines-in-c-30-using-t4-templates/ кажется, что это то, что я хочу, но ссылка на пример кода не работает.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2010

Если бы я был на вашем месте, я бы скачал пробную версию Enterprise Architect:

http://www.sparxsystems.com.au/products/ea/index.html

Затем я смоделировал бы мой сценарий и затем использовал генератор кода. В зависимости от того, сколько вам нужно сгенерировать, вы можете рассмотреть некоторые из более продвинутых опций в продукте, такие как сценарии, которые могут позволить вам генерировать несколько изменяющихся во времени параметров на основе списка.

P.S. Я не работаю в системах Sparx :-), я действительно люблю их инструменты.

0 голосов
/ 14 сентября 2010

Как вы сказали, вам просто нужно:

Определение перечисления, содержащее его переменную, соглашение об именовании, которое включает в имя метода соответствующее состояние перечисления, вызов с отражением и обновлениемпеременная, содержащая перечисление .

Выше не сгенерированный код, но я не понимаю, почему не использовать его.Вы должны быть в состоянии испечь один быстро. Альтернатива, вместо использования отражения, будет содержать в списке для каждого состояния, которое будет вызываться Func <>, и генерировать это должно быть легко с помощью шаблона T4 .


пс.Я имею тенденцию быть намного более полезным, но способ, которым сформулирован вопрос, просил об этом ^ - ^.Тем не менее, я довольно серьезно отношусь к вышесказанному, выполнение любого из вышеперечисленных занимает не так много времени (особенно с помощью stackoverflow в любой части, которую OP может не знать) / и OP написал, что он сделал эторучные тонны раз.

...