是这样的
我有写一个序列化的方法把我的class存盘
BinaryFormatter myBinaryFormatter = new BinaryFormatter();
myBinaryFormatter.Serialize(oFileStream, saveObj);
现在的问题是,我的saveObj会需要与时俱进的新增功能和变量
但每次更新我的class,我的旧的存盘就无法被使用 (因为格式不符)
我目前想到的解决方法是用继承
像是这样:主名称 + 撰写日期,然后继承最后一版的class如下
class MyObj180920: object{}
class MyObj180925: MyObj180920{}
class MyObj181001: MyObj180925{}
然后我有个上层class manage
{
Object myObj;
System.Type myObjType;
}
每次我的程式会实体化最新的class和type
myObj = new MyObj180920;
myObjType = (new MyObj180920).GetType();
然后序列化的时候应该(我觉得)会将实作品(MyObj180920)存入硬盘
而非父类别型态(Object)
当我更新版本后(180925)
我期望我的反序列化能根据 myObjType 转型成正确的过往类别
而不用每次都做转型判断
switch (myObj.GetType().Name)
{
case "MyObj180920":
break;
case "MyObj180925":
break;
}
但是我不会用根据System.Type做转型指令,有人知道要怎么用吗?
感谢大家拨冗观看~