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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架