[問題] 如何根據System.Type做轉型
是這樣的
我有寫一個序列化的方法把我的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做轉型指令,有人知道要怎麼用嗎?
感謝大家撥冗觀看~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.235.221
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1537407838.A.1A0.html
→
09/20 13:16,
5年前
, 1F
09/20 13:16, 1F
推
09/20 16:40,
5年前
, 2F
09/20 16:40, 2F
→
09/20 18:55,
5年前
, 3F
09/20 18:55, 3F
→
09/20 19:00,
5年前
, 4F
09/20 19:00, 4F
實際上我在找好的存檔方式,因為每日要用mail和excel交進度,
每次都要調整excel格式和寄信
覺得很懶且步驟重複
所以想說寫個小程式做協助
寫了之後覺得好用
但後來發現存class後每次有個小更新
就會造成舊的class讀檔失敗
深覺這樣不是辦法,
才想了這個辦法,但實作上遇到困難,才跑上來問,以上。
※ 編輯: s4300026 (220.134.201.145), 09/20/2018 19:25:59
→
09/20 20:54,
5年前
, 5F
09/20 20:54, 5F
→
09/21 07:33,
5年前
, 6F
09/21 07:33, 6F
→
09/21 09:07,
5年前
, 7F
09/21 09:07, 7F
→
09/21 09:15,
5年前
, 8F
09/21 09:15, 8F
推
09/21 13:26,
5年前
, 9F
09/21 13:26, 9F
→
09/21 13:27,
5年前
, 10F
09/21 13:27, 10F
→
09/21 13:27,
5年前
, 11F
09/21 13:27, 11F
→
09/21 13:27,
5年前
, 12F
09/21 13:27, 12F
→
09/21 13:27,
5年前
, 13F
09/21 13:27, 13F
推
09/21 18:46,
5年前
, 14F
09/21 18:46, 14F
推
09/23 00:28,
5年前
, 15F
09/23 00:28, 15F
→
09/23 00:28,
5年前
, 16F
09/23 00:28, 16F
→
09/23 00:28,
5年前
, 17F
09/23 00:28, 17F
→
09/23 00:28,
5年前
, 18F
09/23 00:28, 18F
→
09/23 00:28,
5年前
, 19F
09/23 00:28, 19F
→
09/23 00:28,
5年前
, 20F
09/23 00:28, 20F
→
09/23 00:28,
5年前
, 21F
09/23 00:28, 21F
→
09/23 10:27,
5年前
, 22F
09/23 10:27, 22F
→
09/23 10:27,
5年前
, 23F
09/23 10:27, 23F
推
09/23 11:12,
5年前
, 24F
09/23 11:12, 24F
→
09/23 11:12,
5年前
, 25F
09/23 11:12, 25F
→
09/23 11:12,
5年前
, 26F
09/23 11:12, 26F
→
09/23 11:17,
5年前
, 27F
09/23 11:17, 27F
→
09/23 11:17,
5年前
, 28F
09/23 11:17, 28F
推
09/23 11:19,
5年前
, 29F
09/23 11:19, 29F
→
09/23 11:19,
5年前
, 30F
09/23 11:19, 30F
推
09/23 11:22,
5年前
, 31F
09/23 11:22, 31F
→
09/23 11:22,
5年前
, 32F
09/23 11:22, 32F
→
09/25 11:41,
5年前
, 33F
09/25 11:41, 33F
→
09/25 11:41,
5年前
, 34F
09/25 11:41, 34F