分享

MSMQ 中XmlMessageFormatter 指定可序列化的属性

 ThinkTank_引擎 2016-11-23

前言

  这是一篇关于使用 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

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多