作者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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1626850883.A.807.html
1F:推 APTON: 有没有考虑把sample code贴出来? 07/21 15:14
2F:→ APTON: 不然不知道你的context, 也不知道哪种最适合 07/21 15:15
5F:推 s4300026: PropertyInfo 07/21 18:27
6F:→ annies5: 依你的状况,用常数宣告就好。 07/21 18:39
8F:→ nicetw20xx: 我遇到类似的情况会把几个相依的栏位包成一class 07/24 18:52
9F:→ nicetw20xx: 而且想确认是属性还是栏位? 属性的话尽量相依栏位 07/24 18:53
※ 编辑: windmax1 (203.204.169.33 台湾), 07/24/2021 23:51:36
10F:→ windmax1: 感谢楼上各位大神的意见,我补上Code范例了 07/24 23:51
12F:→ nicetw20xx: 可以去了解栏位和属性,范例属性尽量别开放给外部修改 07/25 10:29
13F:→ nicetw20xx: 另外多补充你要的父转子 07/25 10:40
14F:→ windmax1: 原来建构子多传一个父类别参数 +base继承就可以做到了 07/25 10:56
15F:→ windmax1: 万分感谢 07/25 10:57