作者windmax1 (I do my best)
看板C_Sharp
標題[問題] 多個子類別有共同的屬性
時間Wed Jul 21 15:01:20 2021
父類別 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: PropertyInfo 07/21 18:27
→ annies5: 依你的狀況,用常數宣告就好。 07/21 18:39
→ 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: 可以去了解欄位和屬性,範例屬性盡量別開放給外部修改 07/25 10:29
→ nicetw20xx: 另外多補充你要的父轉子 07/25 10:40
→ windmax1: 原來建構子多傳一個父類別參數 +base繼承就可以做到了 07/25 10:56
→ windmax1: 萬分感謝 07/25 10:57