2015-11-04 34 views
1

我有調用另一個asmx webservice的WCF項目。當我將asmx webservice添加到wcf項目時,它生成了一些類。現在我想將這些類作爲DataContract和DataMembers公開給我的WCF服務。我非常希望通過避免重複來實現這一目標。將生成的代碼(wsdl生成)作爲DataContracts和DataMembers添加到另一個WCF服務

直到現在我試過 當我將生成的類的屬性(數據成員),以現有的DataContract,客戶端,正在調用WCF服務看到成員VARIABLENAME場。我真的不想看到這些字段是私有變量但我想看到真正的屬性。

WCF項目合同貌似這個

[DataContract] 
public partial class Person 
{ 

     [DataMember] 
     public string FirstName { get; set; } 

     [DataMember] 
     public PersonPay PersonPay {get;set;} 


} 

WSDL從ASMX web服務的WSDL生成WCF項目代碼

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34234")] 
    [System.SerializableAttribute()] 
    [System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.ComponentModel.DesignerCategoryAttribute("code")] 
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")] 
    public partial class PersonPay : object, System.ComponentModel.INotifyPropertyChanged { 

    private double salaryField; 

     [System.Xml.Serialization.XmlElementAttribute(Order=0)] 
     public bool Salary{ 
      get { 
       return this.salaryField; 
      } 
      set { 
       this.salaryField= value; 
       this.RaisePropertyChanged("Salary"); 
      } 
     } 

} 

回答

0

您可以使用文本模板轉換工具包(T4或..tt文件) ,用於讀取屬於您項目的ASMX生成文件,在另一個名稱空間中以相同方式重新創建它們,同時添加[DataContract][DataMember]屬性

Regards

+0

任何其他方式,我不想做代碼生成 – Praneeth

+0

OK Praneeth,可能是最好的去除噪聲,是您編輯您的問題說你不想代碼生成 - 然後我刪除我的答案,你不覺得嗎? –

0

我看到您從ASMX生成的PersonPay類是[Serializable]

根據我的WCF Guru,JuvalLöwy,PersonPay應該被序列化爲WCF服務。

只是試一試,並告訴我們。

問候

+0

我不明白。我無法刪除可序列化的屬性,因爲它生成的代碼 – Praneeth

+0

@Praneeth,只是保持生成的代碼原樣。 PersonPay類應該可以通過WCF框架進行序列化 - 現在您已經嘗試了;-) –

+0

@Praneeth,您是否讓PersonPay工作? –