2011-04-07 94 views
5

我在寫一些.NET 2.0 ASMX服務。我有一個場景,我需要使用WSDL.exe生成Web服務代理,但生成的類沒有實現接口,所以我不能僞造Web服務進行測試。如何從WSDL.exe生成客戶端和接口代碼?

下面是我正在嘗試的一種方法,但目前還不能編譯:我知道WSDL.exe可以使用/serverInterface選項生成接口。原則上,我想產生接口和代理類如下:

WSDL MyWebService.wsdl/NOLOGO/L:CS /namespace:Juliet.Services /O:C:\項目\ JulietService \ MyWebServiceInterface.cs /serverInterface

WSDL MyWebService.wsdl/NOLOGO /升:CS /namespace:Juliet.Services /o:C:\projects\JulietService\MyWebServiceProxy.cs

然後在我的項目中包含這兩個文件。後來我應該能夠從產生代理得出我自己的類並實現生成的接口如下:

public class MockableWebService : MyWebService, IMyWebServiceSoap11Binding 
{ 
    // No implementation, the interface is already implicitly implemented 
    // from the methods in the base class. 
} 

這應該在工作原理,除了接口和代理文件將自動生成同一個類我的請求/響應消息的定義,導致The namespace 'Juliet.Services' already contains a definition for 'ABC'類型的數百個錯誤。


我想保持界面/代理生成儘可能自動化 - 這意味着,我要不惜一切代價避免手工修改生成的代碼。

任何人都可以提出一種方法來生成接口和代理同時與WSDL.exe,或更好的方式來獲得上述結果?

回答

2

.NET 2.0 WSDL.EXE不生成部分類嗎?然後你就可以實現對另一個類的部分接口:

public partial class MockableWebService : IMyWebServiceSoap11Binding 
{ 
} 
+0

你的建議我更容易避免生成的代理推導我自己的類,但我有一點不同的問題:WSDL.EXE生成代理和接口類作爲單獨的操作。生成的代理和生成的接口包含定義還將包含請求/響應消息的定義 - 最終結果,因爲它們包含重複的類定義,所以我無法在兩個輸出中包含這些文件。我不想在不同的命名空間中生成響應,理想情況下,我想抑制爲我的文件生成請求/響應消息。 – Juliet 2011-04-07 19:33:22

+0

對不起,但那是不可能的。這也不是你要求的。 – 2011-04-07 19:35:54

+0

@Downvoter:downvote的原因? – 2011-04-07 19:55:12