2

我有一个包含许多操作的 WSDL 文件。但是每个操作soap body都有相同的元素名称,但是在不同的命名空间中。例如 operation1 有 soap.body.op1:Service 和 operation 2 有 soap.body.op2:Service ,其中 op1 和 op2 是命名空间前缀。

当我使用 wsdl.exe 生成我的代理代码时,他生成的类为 Service1 和 Service2,但是如果在 wsdl 中更改服务 1 和 2 的顺序,或者如果添加了新服务 3,则很难维护代理代码.

有没有办法根据 wsdl 操作生成 Service1 和 Service2 类名,而不是标签名?

所以我会得到类名 Operation1 和 Operation2,而不是 Service1 和 Service2。?谢谢大家。

4

1 回答 1

1

恐怕 wsdl.exe 没有用于调整它从 WSDL 文档生成的源代码的开关。

使其更易于维护的唯一方法是获得质量更好的 WDSL 文档。如果您能够更改此设置,您可以通过向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();
于 2011-03-09T11:08:05.713 回答