【问题标题】:Adding Generated Code (wsdl generated) as DataContracts and DataMembers for another WCF service将生成的代码(生成的 wsdl)添加为另一个 WCF 服务的 DataContracts 和 DataMembers
【发布时间】:2015-11-04 14:25:32
【问题描述】:

我有一个调用另一个 asmx webservice 的 WCF 项目。当我将 asmx webservice 添加到 wcf Project 时,它生成了一些类。现在我想将这些类作为 DataContract 和 DataMembers 公开给我的 WCF 服务。我真的很想在没有太多重复的情况下实现这一目标。

到目前为止,我尝试了什么 当我将生成的类作为属性 (DataMember) 添加到现有 DataContract 时,调用 WCF 服务的客户端将成员视为 variableNameField。我真的不想看到这些私有变量的字段,但我想看到真实的属性。

WCF 项目合同长这样

[DataContract]
public partial class Person
{

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

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


}

wsdl 在 wcf 项目中从 asmx Web 服务 wsdl 生成代码

[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");
            }
        }

}

【问题讨论】:

    标签: c# web-services wcf asmx datacontract


    【解决方案1】:

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

    问候

    【讨论】:

    • OK Praneeth,可能是消除噪音的最佳选择,您是否要编辑您的问题以说您不想要代码生成 - 然后我删除我的答案,您不觉得吗?
    【解决方案2】:

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

    根据我的 WCF 大师 Juval Löwy 的说法,PersonPay 应该像 WCF 服务一样被序列化。

    试一试,然后告诉我们。

    问候

    【讨论】:

    • 我不明白。我无法删除可序列化属性,因为它是生成代码
    • @Praneeth,保持生成的代码不变。 PersonPay 类应该可以被 WCF 框架序列化 - 现在你必须尝试 ;-)
    • 不幸的是,Salary 字段未显示在客户端代码中。但我可以看到物体本身。
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 2015-03-15
    • 2018-02-07
    相关资源
    最近更新 更多