首页 新闻 会员 周边

求WCF中的MessageHeaderArray标签用法例子

0
悬赏园豆:20 [待解决问题]

MessageHeaderArray 与 MessageHeader有何不同。

求WCF对以上标签的调用例子。

问题补充: 不要用微软的MSDN链接或内容,语焉不详,没有例子,看不明白。
俗人007的主页 俗人007 | 初学一级 | 园豆:180
提问于:2010-10-21 15:29
< >
分享
所有回答(2)
0

参考:

使用消息约定

HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-10-21 15:53
0

不同之处在于生成的xml结构的不同.

MessageHeader应用于数组属性时,会把数组元素包装在一个节点内,而使用MessageHeaderArray时,就不会有个包装节点.

比如 string[] Messages 属性,使用MessageHeader,则序列化出来的xml为:

<messages>

  <string> xxxxxxxx</string>

 <string> xxxxxxxx</string>

 <string> xxxxxxxx</string>

</messages>

使用MessageHeaderArray时,则为:

 <messages> xxxxxxxx</messages>

 <messages> xxxxxxxx</messages>

 <messages> xxxxxxxx</messages>

 

你可以自己使用XmlSerialize序列化化 List<T> 和 T[] 来观察输出的xml文件的不同,和上面是一样的.

 

 

namespace CSAppConsole {
[MessageContract]
public class WrapperArray {
[MessageHeader]
public int Index { get; set; }

[MessageHeader]
public string[] StringArray { get; set; }
}

[MessageContract]
public class UnwrapperArray {
[MessageHeader]
public int Index { get; set; }

[MessageHeaderArray]
public string[] StringArray { get; set; }
}

class Program {
static void Main(string[] args) {
DataContractSerializer serilaizer
= new DataContractSerializer(typeof(WrapperArray));
using (MemoryStream ms = new MemoryStream()) {
WrapperArray wrapper
= new WrapperArray {
Index
= 1,
StringArray
= new string[] { "string1", "string2", "string3" }
};

serilaizer.WriteObject(ms, wrapper);

ms.Seek(
0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(ms)) {
Console.WriteLine(sr.ReadToEnd());
}
}

serilaizer
= new DataContractSerializer(typeof(UnwrapperArray));
using (MemoryStream ms = new MemoryStream()) {
UnwrapperArray wrapper
= new UnwrapperArray {
Index
= 1,
StringArray
= new string[] { "string1", "string2", "string3" }
};

serilaizer.WriteObject(ms, wrapper);

ms.Seek(
0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(ms)) {
Console.WriteLine(sr.ReadToEnd());
}
}

Console.Read();
}
}
}
Launcher | 园豆:45045 (高人七级) | 2010-10-21 17:01
能给个使用的例子吗? 例程。
支持(0) 反对(0) 俗人007 | 园豆:180 (初学一级) | 2010-10-22 09:23
@俗人007:贴了代码,你可以观察序列化出来的xml的字符串的格式.
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2010-10-22 11:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册