2010-12-09 1 views
3

Мне нужен совет относительно требования в одном из наших проектов. Мы пытаемся добиться того, что мы хотим контролировать поток вызовов методов из текстового или XML-файла.Рабочий процесс как система для изменения потока кода

Например:

string response = new Assembly1.Class1().DoStuff(); 
if (response == "OK") 
{ 
    new Assembly1.Class2().DoStuff(); 
} 
else if (response == "NOTOK") 
{ 
    new Assembly2.Class1().DoStuff(); 
} 

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

+0

Итак, вы хотите каким-то образом представить код C# в XML? И это проще для «нетехнического пользователя» каким образом? – 2010-12-09 05:41:57

+0

Хороший вопрос как часть настраиваемых процессов документооборота. – acoolaum 2010-12-09 05:44:10

+0

Нетехническая часть немного неправильная .. нам нужно, чтобы иметь возможность изменять поток. Он не будет изменен нетехническим человеком. – Naveed 2010-12-09 05:47:24

ответ

0

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

0

Factory design pattern может быть полезен вам. С заводским шаблоном вы можете назначить объекты во время выполнения и позволить этим объектам решить поток процесса ...

Вы должны создавать разные классы с помощью метода sayFactory() (ссылка на интерфейс). Метод должен иметь возможность вызывать другие методы, основанные на необходимости.

В начале процесса вы просто прочитали XML-файл и создали объект для соответствующего класса и вызвали метод рабочего процесса этого класса, который запустит выполнение предварительно определенной последовательности.

2

По сути, вам нужно решить, что вы пытаетесь выполнить.

Код C# содержит в себе определенную сложность, но вся эта сложность существует, потому что код C# очень гибкий.

Вы должны решить, какую гибкость вы хотите предоставить своим нетехническим пользователям. Если вы хотите дать им такую ​​же гибкость, как и C#, хорошо, вы можете просто просто запустить их на C#.

В противном случае первым шагом будет изобретен язык, специфичный для домена, который описывает конфигурацию, которую они собираются делать. Тем не менее, прежде чем вы это сделаете, вам может понадобиться исследование, если есть какие-либо существующие языки домена, которые уже выполняют то, что вы описываете.

Следующим шагом, определив язык, специфичный для домена, является анализ и интерпретация этого языка. Это относительно сложно и обычно является предметом однолетнего длительного курса в колледже под названием «Компиляторы». Если вы не взяли курс компиляторов, есть книги, которые вы можете прочитать. Вы можете пропустить много шагов, используя язык разметки, такой как XML, и стандартную библиотеку синтаксического анализа XML.

Смежные вопросы