MSMQ 中XmlMessageFormatter 指定可序列化的属性
前言
这是一篇关于使用 MS MessageQueue 微软消息队列组件的 麦库笔记 现在搬运到博客园上来
在使用MSMQ 发送消息时 抛出:
IContlliton<T> 是接口 无法序列化的错误。
需要发送的消息是复杂实体:
public class modelOne
{
public string name{get;set;}
public ModelTwo model{get;set;}
}
public class ModelTwo
{
public string name{get;set;}
public IList<ModleThree> list{get;set;}
}
由于其中的ModelTwo 里有接口无法进行序列化。但是list 其实是不需要序列化的。
为了指定需要序列化的属性 可以利用 [XmlIgnore] 标签。该标签表示不需要序列化的属性字段。
更多关于XML 序列化时的attriabute 有:
System.Xml.Serialization命名空间中有一系列的特性类,用来控制复杂类型序列化的控制。例如 XmlElementAttribute、XmlAttributeAttribute、XmlArrayAttribute、 XmlArrayItemAttribute、XmlRootAttribute等等
[XmlRoot("cat")]
public class Cat
{
//定义Color属性的序列化为cat节点的属性
[XmlAttribute("color")]
public
string Color { get; set; }
//要求不序列化Speed属性
[XmlIgnore]
public int Speed {
get; set; }
//设置Saying属性序列化为Xml子元素
[XmlElement("saying")]
public
string Saying { get; set; }
}
}
可以使用XmlElement指定属性序列化为子节点(默认情况会序列化为子节点);或者使用XmlAttribute特性制定属性序列化为Xml节点的属性;还可以通过XmlIgnore特性修饰要求序列化程序不序列化修饰属性
参考链接
http://www.cnblogs.com/luomingui/archive/2010/03/08/1680933.html