前言
這是一篇關於使用 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