2010-09-26 47 views
2

我有一個包含許多操作的單個WSDL文件。但是每個操作肥皂體都有相同的元素名稱,但是在不同的命名空間中。例如,操作1具有soap.body.op1:服務 ,並且操作2具有soap.body.op2:服務,其中op1和op2是命名空間前綴。wsdl.exe:如何在操作中具有相同的元素名稱時生成代理代碼?

當我使用wsdl.exe生成我的代理服務器代碼時,他生成的類爲Service1和Service2,但如果訂單在服務1和服務2的wsdl中發生更改,或者添加了新服務3,則很難維護代理代碼。

有沒有辦法根據wsdl操作生成Service1和Service2類名,而不是標籤名?

所以我會得到類名稱爲Operation1和Operation2,而不是Service1和Service2。 謝謝大家。

回答

1

恐怕wsdl.exe沒有用於調整從WSDL文檔生成的源代碼的開關。

使其更易維護的唯一方法是獲得質量更好的WDSL文檔。

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(); 
如果你在改變這個位置,你可以通過添加更多的信息, ServiceContract屬性添加自定義 NamespaceName到服務類
相關問題