List<Class>列表序列化与反序列化
把自定义的Cameras类添加到列表中
在窗体关闭时序列化列表到.dat文件中
在窗体加载时把.dat文件的信息反序列化到列表里
序列化反序列化:新建BinarySerializer类
public 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) { } } public T DeSerialize<T>(string filePath) { try { FileStream fs = new FileStream(filePath, FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); T o = (T)formatter.Deserialize(fs); fs.Close(); return o; } catch (Exception){ } return default(T); }
Cameras相机类:在类前要加[Serializable]!!
[Serializable] public class Cameras { private string _cameraName; public string CameraName { get { return _cameraName; } set { _cameraName = value; } } private string _cameraIP; public string CameraIP { get { return _cameraIP; } set { _cameraIP = value; } } }
主窗口:
public List<Cameras> cameras = new List<Cameras>(); internal BinarySerializer bs = new BinarySerializer();
序列化列表函数:可以在窗体关闭事件调用
private void SerializeData() { string filename = "camerainform.dat"; bs.Serialize<System.Collections.Generic.List<Cameras>>(cameras, @"dat\" + filename); }
反序列化函数:可以在窗体加载事件中调用,把序列化的信息载入进来
private void GetCameraInform() { if(File.Exists(@"dat\cameraInform.dat")) { cameras = bs.DeSerialize<System.Collections.Generic.List<Cameras>>(@"dat\cameraInform.dat"); for (int i = 0; i < cameras.Count; i++) { cameraname_combobox.Items.Add(cameras[i].CameraName); } } }
浙公网安备 33010602011771号