วิธีการคงอยู่ของวัตถุข้อมูลโดยการทำให้เป็นอนุกรมและดีซีเรียลไลซ์คอลเลกชันของเอนทิตีข้อมูลทั่วไป
เมื่อเรามักจะใช้ฐานข้อมูล เรามักจะประสบปัญหา กล่าวคือ เราไม่ต้องการให้วัตถุเอนทิตีข้อมูลถูกแทรกลงในฐานข้อมูล แต่เรา ต้องการคงอยู่ จากนั้นเราสามารถทำให้อนุกรมเป็น
สตริง XML และบันทึกลงในตำแหน่งอื่นได้ เนื่องจากสตริงถูกสร้างขึ้น จึงสามารถบันทึกลงในตำแหน่งใดก็ได้ที่เราต้องการบันทึก ตัวอย่างเช่น ViewState, คุกกี้, แคชของ asp.net เป็นต้น
ขั้นแรก เรากำหนดคลาสเอนทิตีข้อมูล
เอนทิตีคลาส
-
เอนทิตีสาธารณะ()
-
รหัสส่วนตัวส่วนตัว;
รหัสสาธารณะ
-
รับ
-
รหัสส่งคืน;
-
ชุด
-
รหัส = ค่า;
-
-
ชื่อสตริงส่วนตัว
ชื่อสตริงสาธารณะ
-
รับ
-
ชื่อผู้ส่งคืน;
-
ชุด
-
ชื่อ = ค่า;
-
}
ราคาคู่ส่วนตัว;
ราคาคู่สาธารณะ
-
รับ
-
ราคาไปกลับ;
-
ชุด
-
ราคา = มูลค่า;
-
-
-
ดังนั้นให้แทรกมันเข้าไปในวัตถุ List
List
เอนทิตี obj = เอนทิตีใหม่ ();
obj.Id = 1;
obj.Name = "ทดสอบ";
obj.ราคา = 3.23;
รายการเพิ่ม(obj);
ด้วยวิธีนี้ วัตถุ List
อนุกรมสตริงคงที่สาธารณะ Serialize
-
ผลลัพธ์ XmlDocument = XmlDocument ใหม่();
result.LoadXml("<ราก>ราก>");
foreach (BusinessObject obj ใน GenericList)
-
รายการ XmlElement = result.CreateElement("รายการ");
คุณสมบัติ PropertyInfo[] = obj.GetType().GetProperties();
foreach (คุณสมบัติ PropertyInfo ในคุณสมบัติ)
-
ถ้า (property.GetValue (obj, null) != null)
-
องค์ประกอบ XmlElement = result.CreateElement (property.Name);
element.SetAttribute("ประเภท", property.PropertyType.Name);
องค์ประกอบ.InnerText = คุณสมบัติ GetValue (obj, null). ToString ();
Item.AppendChild(องค์ประกอบ);
-
-
result.DocumentElement.AppendChild (รายการ);
-
กลับผลลัพธ์ InnerXml;
-
จากนั้นเราเรียกเมธอดนี้
ว่า string str = Serialize
ไฟล์ XML ที่สร้างขึ้นคือ:
<รายการ>
<ประเภทราคา="สองเท่า">3.23ราคา>
รายการ>
ราก>
ต่อไป เราจะทำการดีซีเรียลไลซ์ไฟล์ xml ที่สร้างขึ้นด้านบน และสร้างอ็อบเจ็กต์ List
public static List
-
รายการ
XmlDocument XmlDoc = XmlDocument ใหม่();
XmlDoc.LoadXml(XmlStr);
foreach (XmlNode ItemNode ใน XmlDoc.GetElementsByTagName("Root").Item(0).ChildNodes)
-
สินค้า BusinessObject = Activator.CreateInstance
คุณสมบัติ PropertyInfo[] = typeof(BusinessObject).GetProperties();
foreach (คุณสมบัติ XmlNodeNode ใน ItemNode.ChildNodes)
-
ชื่อสตริง = propertyNode.Name;
ประเภทสตริง = propertyNode.Attributes["Type"].Value;
ค่าสตริง = propertyNode.InnerXml;
foreach (คุณสมบัติ PropertyInfo ในคุณสมบัติ)
-
ถ้า (ชื่อ == คุณสมบัติชื่อ)
-
property.SetValue(รายการ,Convert.ChangeType(ค่า,property.PropertyType), null);
-
-
-
result.Add(รายการ);
-
ส่งคืนผลลัพธ์;
-
จากนั้นเราเรียกวิธีนี้:
List
มันจบแล้ว
บทความนี้จะแนะนำวิธีง่ายๆ ในการทำซีเรียลไลซ์ออบเจ็กต์ List<> คุณควรใช้ตามสถานการณ์ของคุณเอง
http://www.cnblogs.com/kchen/archive/2006/11/04/550382.html