2010-05-06 115 views
0

我有一個文件,將用於許多應用程序項目。這些文件的唯一區別是web服務引用名稱。這樣的代碼:有沒有簡單的方法來自動生成這樣的代碼?

public void Test(){ 
    Kevin.ServiceReference1.Service1Client client = new Kevin.ServiceReference1.Service1Client(); 
    // do something.... 
} 

與上面的代碼類似,'Kevin.ServiceReference1'將被指定的應用程序項目命名空間替換。 因此,根據DRY(不要重複自己),我不應該只是將文件複製到許多項目和手動重命名指定部分。有什麼方法可以輕鬆地將我的模板文件的某些部分替換爲與該項目相關的內容?

+0

執行服務客戶端共享一個類似的界面? – 2010-05-06 18:36:15

+0

他們正在消費 – 2010-05-08 04:04:45

+0

您已經通過在每個項目的代理代碼重複自己確切的Web服務接口。您可以避免重複使用僅用於代理代碼的庫項目,並參考其他項目的項目。是的,在這個解決方案中,代理代碼確實有自己的名稱空間。 – Codism 2010-06-24 13:18:41

回答

2

這是不會幹的問題;雖然這些文件可能看起來很相似,但是你不重複自己,因爲唯一的操作 - 變量的聲明和賦值 - 對於每種類型**都是不同的。

雖然你可能要考慮給你的類共同的父,如果他們有共同的目標,有沒有在你的例子表明,類,其實任何關係。

如果您正在尋找使自己的過程自動化的方法,請查看T4 Templates(免費從微軟)或PostSharp。關於代碼生成,這裏還有很多其他線程。

+0

我不同意你的說法。邏輯完全一樣。這些應用程序使用的Web服務也是一樣的,除了生成的代碼的命名空間。 但我無法控制生成的服務參考代碼的命名空間,我可以嗎?如果可以,可以使用鏈接文件解決問題。 – 2010-05-08 04:05:37

0

如果更改文件中的唯一的事情是命名空間和類名,就可以提取所有的其他常見功能集成到一個基類。然後,針對每種不同的用法,創建一個從基類繼承的派生類。派生類可以只是一個簡單的方法,將返回特定的命名空間/類。

+0

是的,這就是我現在所做的。但問題是,代碼依賴於Web服務生成的實體,這又會回到名稱空間問題。 – 2010-05-08 04:13:02

相關問題