【发布时间】:2016-10-24 06:09:40
【问题描述】:
我正在处理 WCF 中的列表。我想在客户端和服务器之间传递带有一个额外属性的列表。
需要的输出
<NumbersList>
<Count>2</Count> //Extra property to parse
<Number>1</Number>
<Number>2</Number>
</NumbersList>
所以我按照这个链接的教程:http://www.borismod.net/2009/04/wcf-collectiondatacontract-and.html
我编写了以下代码来实现这一点。
[MessageContract]
public class RequestResponse
{
[MessageBodyMember(Name = "NumbersList")]
public NumbersList NumbersList;
}
[DataContract]
public class NumbersList
{
[DataMember]
public int Count { get; set; }
[DataMember]
public Number Number { get; set; }
}
[CollectionDataContract(ItemName = "Number")]
public class Number : Collection<int>
{
}
所以它给了我这样的输出:
<NumbersList>
<Count>2</Count>
<Number>
<Number>1</Number>
<Number>2</Number>
</Number>
</NumbersList>
如果我将用DataMember 装饰的Count 属性直接放在CollectionDataContract 中,那么WCF 会忽略该属性。
再试一次:
[MessageContract]
public class RequestResponse
{
[MessageBodyMember(Name = "NumbersList")]
public Number NumbersList;
}
[CollectionDataContract(ItemName = "Number")]
public class Number : Collection<int>
{
[DataMember]
public int Count { get; set; } // This will be omited...
}
可以像这样给出输出:
<NumbersList>
<Number>
<Number>1</Number>
<Number>2</Number>
</Number>
</NumbersList>
谁能帮我得到这样的输出:
需要的输出
<NumbersList>
<Count>2</Count>
<Number>1</Number>
<Number>2</Number>
</NumbersList>
【问题讨论】:
-
据我所知,这是不可能的。
-
@selami,有可能,请看下面我的回答。
标签: c# .net wcf xml-parsing