【问题标题】:WCF serialization - double nestedWCF 序列化 - 双嵌套
【发布时间】:2014-08-04 17:47:54
【问题描述】:

我正在尝试创建一个服务,它将列表作为一个数据成员以及其他字符串数据成员返回。

服务正在运行,但返回的结构包含嵌套太深的列表。像这样:

a:Name> </a:Name>
<a:Phone> </a:Phone>
<a:Offices> 
<a:Offices> 
<a: Office Name>  </a:Office Name>
<a: Office Address>  </a:Office Address>
<a: Office eMail>  </a:Office eMail>
</a:Offices> 
<a:Offices> 
<a: Office Name>  </a:Office Name>
<a: Office Address>  </a:Office Address>
<a: Office eMail>  </a:Office eMail>
</a:Offices> 
</a:Offices>

我需要它返回的是这样的结构:

<a:Name> </a:Name>
<a:Phone> </a:Phone>
<a:Offices> 
<a: Office Name>  </a:Office Name>
<a: Office Address>  </a:Office Address>
<a: Office eMail>  </a:Office eMail>
</a:Offices> 
<a:Offices> 
<a: Office Name>  </a:Office Name>
<a: Office Address>  </a:Office Address>
<a: Office eMail>  </a:Office eMail>
</a:Offices> 

我的数据合同的结构如下:

[DataContract]
public class Person
{

[DataMember(Name = "Name", Order = 1)]
public string Name{ get; set; }

[DataMember(Name = "Phone", Order = 2)]
public string Phone{ get; set; }

[DataMember(Name = "Offices", Order = 3)]
public List<Offices> offices{ get; set; }
}

[DataContract]
public class Offices
{
[DataMember(Name = "Office Name", Order = 1)]
public string OfficeName{ get; set; }

[DataMember(Name = "Office Address", Order = 2)]
public string OfficeAddress{ get; set; }

[DataMember(Name = "Office eMail", Order = 3)]
public string OfficeeMail{ get; set; }
}

提前致谢。

【问题讨论】:

    标签: c# wcf serialization


    【解决方案1】:

    我认为您需要使对象的结构看起来像这样。请注意,我没有对此进行测试。

       [DataContract]
       public class Person
       {
    
            [DataMember(Name = "Name", Order = 1)]
            public string Name{ get; set; }
    
            [DataMember(Name = "Phone", Order = 2)]
            public string Phone{ get; set; }
    
            [DataMember(Name = "List Item 1", Order = 3)]
            public List<string> ListItem1 { get; set; }
    
            [DataMember(Name = "List Item 2", Order = 4)]
            public List<string> ListItem2 { get; set; }
    
            [DataMember(Name = "List Item 3", Order = 5)]
            public List<string> ListItem3 { get; set; }
       }
    

    【讨论】:

    • 谢谢迈克尔。该列表旨在成为办公地点的一组属性。其中列表项 1 = 办公室名称,列表项 2= 办公室地址,列表项 3= 办公室电子邮件。我修改了原始问题以反映这一点。我还应该尝试按照您建议的方式分解列表吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多