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解析庫)跳過很多步驟。