C_Sharp 板


LINE

我原先有一种class, ex: Class ToolA { public double CalToolData(double input, out double toolData) public bool CalRes(List<double> toolDatas) } 我现在要新增另一种变形,他的ToolData比较复杂, ex: Class ToolB { public double CalToolData(double input, out ToolDataB toolDataB) public bool CalRes(List<ToolDataB> toolDataBs) } Class ToolDataB { public int x; public double y; public string z; } 我该如何用继承加入ToolB? 目前的想法是 Interface ITool { public double CalToolData(double input, out ToolData toolData) public bool CalRes(List<ToolData> toolDatas) } abstract class ToolData {} class ToolA: ITool { 实作 public double CalToolData(double input, out ToolData toolData) public bool CalRes(List<ToolData> toolDatas) //为了共用旧code保留方法 public double CalToolData(double input, out double toolData) public bool CalRes(List<double> toolDatas) } class ToolDataA : ToolData { double tooldata; } class ToolB: ITool { 实作 public double CalToolData(double input, out ToolData toolData) public bool CalRes(List<ToolData> toolDatas) } class ToolDataB: ToolData { public int x; public double y; public string z; } 请问是否有更好的写法? 另外,我在实做CalRes时,该如何转型成我要的type? ConvertAll? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.138.227 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1655203828.A.269.html
1F:推 s4300026: 那跟out object 有什麽不一样? 06/14 19:44
2F:推 s4300026: double tooldata的意义与 double y 不同吗? 感觉是必要 06/14 19:46
3F:→ s4300026: 项啊。 06/14 19:46
out object应该是跟out ToolData一样只是ToolData可以再限制类别,但一样无法跟 旧的out double共用,旧的double变数丢到out object编译会报错。 ToolDataB跟ToolDataA只是举例,不过没错目前的ToolDataB里面的确有成员 是跟原来double tooldata可以对应的,那有比较好的写法吗? ※ 编辑: powerD (36.224.138.227 台湾), 06/14/2022 20:19:39
4F:→ testPtt: class Tool<T> where T:ToolData,double 06/14 21:10
5F:→ BusHeroVER: 楼上的应该是interface ITool<T> where T:ToolData,d 06/14 23:52
6F:→ BusHeroVER: ouble 06/14 23:52
7F:推 t64141: ToolA部分, virtual CalToolData(...) 06/14 23:56
8F:→ t64141: CalRes<T>(List<T> toolDatas) 06/14 23:57
9F:→ t64141: ToolB 继承字 ToolA ,override CalToolData(...) 06/14 23:59
10F:→ BusHeroVER: https://i.imgur.com/pId87ie.jpg 06/15 00:03
用泛型的话我工厂会编译不过 class factory { ITool tool; } 似乎需要预先输入泛型类型 ※ 编辑: powerD (36.224.138.227 台湾), 06/15/2022 00:18:19
11F:→ BusHeroVER: https://i.imgur.com/wWZKHNf.jpg 06/15 00:25
工厂模式我无法预先决定T ※ 编辑: powerD (36.224.138.227 台湾), 06/15/2022 00:43:57 我原先的想法 class Manager { Tool tool; App(ToolA tool_unit) { tool = (Tool)tool_unit; } App(Tool tool_unit) { tool = tool_unit; } Cal(double input) { tool.CalToolData(input, out ToolData toolData); } } void Main() { ... //旧code App appA = new Manager(toolA); //新 App appB = new Manager((Tool)toolB); appA.Cal() appB.Cal() ... } 写成泛型的话,我该如何写通用的Manager, 因为要沿用旧code,Manager不可以改成泛型 ※ 编辑: powerD (36.224.138.227 台湾), 06/15/2022 08:48:20
12F:→ testPtt: 改成<out T> 06/15 08:49
13F:→ testPtt: Manager<T>跟Manager no T不能并存吗? 06/15 09:07
请问要如何共存?如果是另外新的Manager2<T>会必须维护两套Manger ※ 编辑: powerD (36.224.138.227 台湾), 06/15/2022 09:11:03
14F:→ testPtt: Manager<T>:Manager 06/15 09:21
15F:推 Litfal: 重点应该是你为何要继承 06/15 21:41
16F:→ Litfal: ToolA的data应该用ToolDataA包装起来,不然你这样弄得很 06/15 21:42
17F:→ Litfal: 乱 06/15 21:42
18F:→ Litfal: 这样ToolB和ToolDataB都是A的扩充,就合理了 06/15 21:44
19F:推 Litfal: CalRes不应该用转型,而是ToolDataA和B各自实作自己的Cal 06/16 00:45
20F:→ Litfal: Res。若你的ToolB不能吃ToolDataA,或反过来,你就要好好 06/16 00:45
21F:→ Litfal: 考虑这样的抽象关系是否合理 06/16 00:45







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP