像系统一样改变代码流的工作流程

时间:2010-12-09 05:37:27

标签: c# workflow dynamic-code

我需要在我们的某个项目中提出有关要求的建议。我们想要实现的是我们想要控制文本或XML文件中方法调用的流程。

例如:

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

我如何以某种格式表示上述代码,非技术用户可以修改这些格式以修改函数调用的顺序。

3 个答案:

答案 0 :(得分:2)

从根本上说,你必须决定你要完成什么。

C#代码包含一定的复杂性,但所有这些复杂性都存在,因为C#代码非常灵活。

您必须决定为非技术用户提供多少灵活性。如果你想给它们与C#一样的灵活性,那么你也可以在C#中使用它们编程。

否则,第一步将是发明一种特定于域的语言,该语言描述了他们将要执行的配置。但是,在您这样做之前,您可能想要研究是否有任何现有的特定于域的语言已经完成了您所描述的内容。

定义域特定语言的下一步是解析和解释该语言。这是相对复杂的,通常是大学一学期长的课程,称为编译器。如果您还没有参加编译器课程,那么您可以阅读书籍。您可以通过使用XML和标准XML解析库等标记语言来跳过许多步骤。

答案 1 :(得分:0)

我认为您可以使用反射来实现此目的,或者从xml中生成代码。 这里有很多样品。

答案 2 :(得分:0)

Factory design pattern可能对您有很大帮助。使用工厂模式,您可以在运行时分配对象,并让这些对象决定流程的流程......

您应该使用一个方法来构建不同的类,例如WorkFlow()(在接口中引用)。该方法应该能够根据需要调用其他方法。

在流程开始时,您只需读取XML文件并为相应的类创建一个对象,然后调用该类的工作流方法,该方法将执行预定的序列。