我有一个包含许多操作的WSDL文件。但是每个操作soap body都具有相同的元素名称,但是在不同的命名空间中。例如,operation1有soap.body.op1:服务 和operation 2有soap.body.op2:Service,其中op1和op2是名称空间前缀。
当我使用wsdl.exe生成代理代码时,他生成了类作为Service1和Service2,但是如果在服务1和2的wsdl中更改了订单,或者添加了新服务3,则很难维护代理代码。
有没有办法根据wsdl操作生成Service1和Service2类名,而不是标记名?
所以我会将类名称作为Operation1和Operation2,而不是Service1和Service2。 谢谢大家。
答案 0 :(得分:1)
我担心wsdl.exe没有用于调整它从WSDL文档生成的源代码的开关。
使其更易于维护的唯一方法是获得更高质量的WDSL文档。如果您可以更改此设置,可以通过向Namespace属性添加更多信息,将自定义Name和ServiceContract添加到服务类中:
namespace op1
{
[ServiceContract(Name = "MyNicelyNamedService", Namespace = "http://mydomain.com/op1")]
public class Service
{
[OperationContract(Name = "MyAwesomeMethod")]
public void SomeMethod()
{
...
}
}
}
这将生成客户端代码,如:
MyNicelyNamedServiceClient client = new MyNicelyNamedServiceClient();
client.MyAwesomeMethod();
client.Close();