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

时间:2015-11-04 14:25:33

标签: c# web-services wcf asmx datacontract

我有一个调用另一个asmx webservice的WCF项目。当我将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 service 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");
            }
        }

}

2 个答案:

答案 0 :(得分:0)

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

此致

答案 1 :(得分:0)

我看到您在ASMX中生成的PersonPay课程为[Serializable]

根据我的WCF Guru,JuvalLöwy,PersonPay应该像WCF服务一样被序列化。

试试看,然后告诉我们。

此致