2011-04-07 95 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