看板 C_Sharp 關於我們 聯絡資訊
父類別 X 有26個屬性 a~z 子類別 X-1、X-2、X-3繼承X 目前遇到的窘境是,每次Switch判斷是X-1、X-2、X-3其中一類後, 都必須再次手動塞屬性值給這三個子類別,總共要寫 26x3=78個餵值動作 原本以為把父類別先塞完屬性,再轉換型別用子類別接收,這樣就只要做一次就好 但沒想到繼承只能子轉父,不能父轉子.. 想請教高人們,這種狀況該如何優化呢? ------------------------------------ 補上實際範例 父類別 Car 子類別TwoTire、ThreeTire、FourTire 父類別屬性 Owner、Maintainer、Designer Switch (CarType) //DB存取的值 { case "TwoTire": TwoTire 2t = New TwoTire(); 2t.Owner = "xxx"; 2t.Maintainer = "yyy"; 2t.Designer = "zzz"; //後面都是子類別本身特有的屬性 2t.?? = ???; break; case "ThreeTire": ThreeTire 3t = New ThreeTire(); 3t.Owner = "xxx"; 3t.Maintainer = "yyy"; 3t.Designer = "zzz"; //同2t 3t.?? = ???; break; case "FourTire": FourTire 4t = New FourTire(); 4t.Owner = "xxx"; 4t.Maintainer = "yyy"; 4t.Designer = "zzz"; //同2t 4t.?? = ???; break; } 因為父類別有的屬性,其實值都是固定的,變成Switch裡面每個子類別都要做一樣的事 ,所以我其實想做的事就是讓它做一次就好,但經驗不足不曉得該如何設計...QQ 再麻煩各位大神指點了,感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.204.169.33 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1626850883.A.807.html
APTON: 有沒有考慮把sample code貼出來? 07/21 15:14
APTON: 不然不知道你的context, 也不知道哪種最適合 07/21 15:15
s4300026: https://i.imgur.com/1GIascp.jpg 07/21 18:15
s4300026: https://i.imgur.com/GEQ7AgX.jpg 07/21 18:16
s4300026: PropertyInfo 07/21 18:27
annies5: 依你的狀況,用常數宣告就好。 07/21 18:39
nicetw20xx: https://dotnetfiddle.net/tCqPYe 你想問base()? 07/24 18:50
nicetw20xx: 我遇到類似的情況會把幾個相依的欄位包成一class 07/24 18:52
nicetw20xx: 而且想確認是屬性還是欄位? 屬性的話盡量相依欄位 07/24 18:53
※ 編輯: windmax1 (203.204.169.33 臺灣), 07/24/2021 23:51:36
windmax1: 感謝樓上各位大神的意見,我補上Code範例了 07/24 23:51
nicetw20xx: https://dotnetfiddle.net/fJs31b 大概像這樣吧 07/25 10:27
nicetw20xx: 可以去了解欄位和屬性,範例屬性盡量別開放給外部修改 07/25 10:29
nicetw20xx: 另外多補充你要的父轉子 07/25 10:40
windmax1: 原來建構子多傳一個父類別參數 +base繼承就可以做到了 07/25 10:56
windmax1: 萬分感謝 07/25 10:57