序列化與反序列化非常方便,建立class後可以序列化存起來,需要的時候再返序列化把資料全部都讀回來。
直接高清有碼放上來
public static class SiteHelper
{
public static string Serialize(object o)
{
XmlSerializer ser = new XmlSerializer(o.GetType());
StringBuilder sb = new StringBuilder();
StringWriter writer = new StringWriter(sb);
ser.Serialize(writer, o);
return sb.ToString();
}
public static T Deserialize<T>(string s)
{
XmlDocument xdoc = new XmlDocument();
try
{
xdoc.LoadXml(s);
XmlNodeReader reader = new XmlNodeReader(xdoc.DocumentElement);
XmlSerializer ser = new XmlSerializer(typeof(T));
object obj = ser.Deserialize(reader);
return (T)obj;
}
catch
{
return default(T);
}
}
}
忘了從哪裡得到這段Code的,反正很好用就是
以下為使用方法
1.建立Class(記得public)
public class Car
{
public string name { get; set; }
public int ID { get; set; }
}
2.使用(反)序列化
Car myCar = new Car() { ID = 1, name = "wade Car" };
List<Car> myCars = new List<Car>() {
new Car { ID = 1 , name = "car1"},
new Car { ID = 2, name = "car2"},
new Car { ID = 3, name = "car3"},
new Car { ID = 4, name = "car4"}
};
string s = SiteHelper.Serialize(myCars);
List<Car> o = SiteHelper.Deserialize<List<Car>>(s);
foreach (var c in o)
{
Console.WriteLine($" ID = {c.ID} , name = {c.name}");
}
Console.ReadLine();
執行結果:
序列化之後可以把xml檔存起來,要是需要使用這份資料就把這個檔案反序列化回來
之前是用在機台的參數存檔,把機台參數存在電腦某處,由於每個機台設備都有些許小差異,部分參數會不同於其他機台,這時候執行程式時就能把該設備的參數提出來使用,修改參數時也能再存檔以利下次機台的使用。
08/27更新
補上其他序列化的程式碼(好像快一點點)
public static class Serialization
{
public static string Serialize<T>(T ObjectToSerialize)
{
XmlSerializer xmlSerializer = new XmlSerializer(ObjectToSerialize.GetType());
using StringWriter textWriter = new StringWriter();
xmlSerializer.Serialize(textWriter, ObjectToSerialize);
return textWriter.ToString();
}
public static T Deserialize<T>(string input) where T : class
{
XmlSerializer ser = new XmlSerializer(typeof(T));
using StringReader sr = new StringReader(input);
return (T)ser.Deserialize(sr);
}
}
另外補上XML的檔案
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfCar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Car>
<name>car1</name>
<ID>1</ID>
</Car>
<Car>
<name>car2</name>
<ID>2</ID>
</Car>
<Car>
<name>car3</name>
<ID>3</ID>
</Car>
<Car>
<name>car4</name>
<ID>4</ID>
</Car>
</ArrayOfCar>