[問題] 多個子類別有共同的屬性

看板C_Sharp (C#)作者 (I do my best)時間2年前 (2021/07/21 15:01), 2年前編輯推噓5(5010)
留言15則, 5人參與, 2年前最新討論串1/1
父類別 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

07/21 15:14, 2年前 , 1F
有沒有考慮把sample code貼出來?
07/21 15:14, 1F

07/21 15:15, 2年前 , 2F
不然不知道你的context, 也不知道哪種最適合
07/21 15:15, 2F

07/21 18:15, 2年前 , 3F

07/21 18:16, 2年前 , 4F

07/21 18:27, 2年前 , 5F
PropertyInfo
07/21 18:27, 5F

07/21 18:39, 2年前 , 6F
依你的狀況,用常數宣告就好。
07/21 18:39, 6F

07/24 18:50, 2年前 , 7F
07/24 18:50, 7F

07/24 18:52, 2年前 , 8F
我遇到類似的情況會把幾個相依的欄位包成一class
07/24 18:52, 8F

07/24 18:53, 2年前 , 9F
而且想確認是屬性還是欄位? 屬性的話盡量相依欄位
07/24 18:53, 9F
※ 編輯: windmax1 (203.204.169.33 臺灣), 07/24/2021 23:51:36

07/24 23:51, 2年前 , 10F
感謝樓上各位大神的意見,我補上Code範例了
07/24 23:51, 10F

07/25 10:27, 2年前 , 11F
07/25 10:27, 11F

07/25 10:29, 2年前 , 12F
可以去了解欄位和屬性,範例屬性盡量別開放給外部修改
07/25 10:29, 12F

07/25 10:40, 2年前 , 13F
另外多補充你要的父轉子
07/25 10:40, 13F

07/25 10:56, 2年前 , 14F
原來建構子多傳一個父類別參數 +base繼承就可以做到了
07/25 10:56, 14F

07/25 10:57, 2年前 , 15F
萬分感謝
07/25 10:57, 15F
文章代碼(AID): #1WzyP3W7 (C_Sharp)
文章代碼(AID): #1WzyP3W7 (C_Sharp)