-
XML序列化需要引用名称空间System.Xml.Serialization,序列化代码如下:
public static void Serialize<T>(T o, string filePath)
{
try
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
StreamWriter sw = new StreamWriter(filePath, false);
formatter.Serialize(sw, o);
sw.Flush();
sw.Close();
}
catch (Exception) { }
}
-
XML反序列化,代码如下:
public static T DeSerialize<T>(string filePath)
{
try
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
StreamReader sr = new StreamReader(filePath);
T o = (T)formatter.Deserialize(sr);
sr.Close();
return o;
}
catch (Exception)
{
}
return default(T);
}
END
Soap序列化
-
Soap序列化需要名称引用空间System.Runtime.Serialization.Formatters.Soap,并且该dll引用需要手工添加。Soap序列化代码,如下:
public static void Serialize<T>(T o, string filePath)
{
try
{
SoapFormatter formatter = new SoapFormatter();
// StreamWriter sw = new StreamWriter(filePath, false);
Stream stream = new FileStream(filePath , FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, o);
stream.Flush();
stream.Close();
}
catch (Exception) { }
}
-
Soap反序列化,代码如下:
public static T DeSerialize<T>(string filePath)
{
try
{
SoapFormatter formatter = new SoapFormatter();
// StreamReader sr = new StreamReader(filePath);
Stream destream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
T o = (T)formatter.Deserialize(destream);
destream.Flush();
destream.Close();
return o;
}
catch (Exception)
{
}
return default(T);
}
END
Binary序列化和反序列化
-
Binary序列化,代码:
public static void Serialize<T>(T o, string filePath)
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, o);
stream.Flush();
stream.Close();
}
catch (Exception) { }
}
-
Binary反序列化,代码:
public static T DeSerialize<T>(string filePath)
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
Stream destream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
T o = (T)formatter.Deserialize(destream);
destream.Flush();
destream.Close();
return o;
}
catch (Exception)
{
}
return default(T);
}
END
测试
-
在Test项目中的MainForm窗体中添加两个Button控件,分别命名为“序列化”和“反序列化”,并添加代码:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string str = "Hello world!!!";
KTools.Serializer.XMLSerializer.Serialize<string>(str, "1.txt");
MessageBox.Show("序列化完毕");
}
private void button2_Click(object sender, EventArgs e)
{
string str = KTools.Serializer.XMLSerializer.DeSerialize<string>("1.txt");
MessageBox.Show(str);
}
}