繁体   English   中英

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

[英]Workflow like system to change code flow

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

例如:

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

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

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM