2010-12-09 53 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

那么,你想以某种方式表示XML中的C#代码?这对于“非技术用户”来说更容易? – 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可能对您有很大的帮助。随着工厂模式可以在运行时分配的对象和让那些对象决定处理的流程...

你应该用的方法建立不同类别的说工作流程()(在接口引用)。该方法应该能够根据需要调用其他方法。

在过程的开始,你只读取XML文件,并创建相应的类的对象,然后调用这个类,这将inturn执行预定顺序的工作流程方法。

2

基本上,你必须决定你想要完成什么。

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

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

否则,第一步将是发明一个领域特定的语言,描述他们将要完成的配置。然而,在你做这件事之前,你可能想研究是否有任何现有的域特定语言已经做了你所描述的内容。

下一步,定义了一个领域特定的语言,是解析和解释该语言。这是相对复杂的,并且通常是在大学称为编译器的一学期长课程的主题。如果你还没有参加编译器课程,你可以阅读一些书。您可以通过使用标记语言(如XML和标准XML解析库)跳过很多步骤。