繁体   English   中英

将生成的代码(生成的wsdl)添加为另一个WCF服务的DataContracts和DataMembers

[英]Adding Generated Code (wsdl generated) as DataContracts and DataMembers for another WCF service

我有WCF项目,它调用了另一个asmx Web服务。 当我将asmx webservice添加到wcf Project时,它生成了一些类。 现在,我想将这些类作为DataContract和DataMembers公开给我的WCF服务。 我真的很想做到这一点,而无需过多重复。

现在直到我尝试了什么当我将生成的类作为属性(DataMember)添加到现有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");
            }
        }

}

您可以使用文本模板转换工具包(T4或..tt文件)来读取属于项目的ASMX生成的文件,并通过添加[DataContract][DataMember]属性在另一个命名空间中以相同方式重新创建它们。

问候

我看到您从ASMX生成的PersonPay类是[Serializable]

根据我的WCF专家JuvalLöwy所说, PersonPay应该被序列化为WCF服务。

请尝试一下,然后告诉我们。

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM