反射:程序集包含模块,而模块包含类型,类型包含成员,反射则提供了程序封装集,模块和类型的对象.您可以使用反射动态创建类型的实列,将类型绑定到现有对象,或从现有对象中获得类型,然后,可以调用类型的方法或其字段和属性.
序列化:序列化是将对象转换为容易传输的格式的过程.如:可以序列化一个对象,然后使用HTTP通过 Internet 在客户端和服务器之间传输该对象.在另一端,反序列化将从该流重新构造对象.
序列化和反序列化用于将一个对象保存到文件,和从文件读取。
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable()]//可以序列化的类需要用这个属性标记
public class ToBeSerialized
{
public int a;
public string b;
public ToBeSerialized(int a,string b)
{
this.a=a;
this.b=b;
}
}
public class Test
{
public void Serialize()//序列化
{
ToBeSerialized tbs = new ToBeSerialized(22,"SOM");
Stream fs = File.Create("Serialized.txt");
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(fs, tbs);
fs.Close();
}
public void DeSerialize()//反序列化
{
ToBeSerialized restore;
Stream fs = File.OpenRead("Serialized.txt");
BinaryFormatter deserializer = new BinaryFormatter();
restore = (ToBeSerialized)(deserializer.Deserialize(fs));//反序列化得到的对象
fs.Close();
}
}