作者:
ZooseWu (N5)
2021-11-11 18:21:49我有兩個class A 與 B
他們有80%的功能與函示名稱相似
然後我只有runtime的時候才知道物件身上有哪一個class
我有一個好方法可以簡單的呼叫 (A|B).function嗎
對了class不是我寫的
所以我沒辦法透過寫interface然後讓AB繼承這種方法
作者: aynmeow (只有我跟喵喵) 2021-11-11 18:22:00
if a 反射a
作者:
SuicidePeko (string int = true;)
2021-11-11 18:23:00(a)obj.fuckPeko()
作者:
ZooseWu (N5)
2021-11-11 18:23:00要用反射喔:( 反射感覺就很吃資源
作者: aynmeow (只有我跟喵喵) 2021-11-11 18:24:00
不用反射 case過去吧 夠簡單惹
作者:
yam276 ('_')
2021-11-11 18:24:00兩個完全不同的class嗎
作者:
ZooseWu (N5)
2021-11-11 18:24:00所以我有30條function 就要寫30個switch?
作者: aynmeow (只有我跟喵喵) 2021-11-11 18:25:00
除非你想去撈function2名稱做壞事 不然應該case就可以惹ㄅ
作者:
ZooseWu (N5)
2021-11-11 18:25:00應該說兩個套件實做同樣的功能 函示或變數名稱大部分一樣
作者:
ZooseWu (N5)
2021-11-11 18:26:00我本來想用泛型 where: A,B 可是好像沒有這種用法我現在就是用if else 可是要用的功能越來越多想說有沒有一勞永逸的通用解法
作者:
ZooseWu (N5)
2021-11-11 18:30:00那啥
作者:
yam276 ('_')
2021-11-11 18:30:00代理模式
作者:
ZooseWu (N5)
2021-11-11 18:32:00就是寫一個中間層把所有的功能都實做一遍 然後看狀況呼叫A或B喔
作者:
SuicidePeko (string int = true;)
2021-11-11 18:32:00每個函數定義一個 裡面就做if a a.call() else
作者:
ZooseWu (N5)
2021-11-11 18:33:00好智障 可是好像也只能這樣了
沒辦法從開頭給的一些變數或數值直接先去判斷要用哪個一定要在跑的時候才會知道是嘛?
作者:
ZooseWu (N5)
2021-11-11 18:34:00每個物件都有A 只是有可能有B 有B就要叫B 沒有就叫A
作者:
SuicidePeko (string int = true;)
2021-11-11 18:34:00這就class先天結構就不對了==只有遠路可走用object 然後(a) (b) 這樣會很慢噢??
作者:
ZooseWu (N5)
2021-11-11 18:38:00就是不行啊 一個是引擎的class 一個是套件的class
作者:
SuicidePeko (string int = true;)
2021-11-11 18:39:00原來叫unboxing 學到了
作者:
ZooseWu (N5)
2021-11-11 18:40:00看起來寫代理就是唯一解了
建map跟列舉 要用的時候把列舉丟進mapget出來
作者:
ZooseWu (N5)
2021-11-11 18:46:00GetMethod就是反射了吧
作者:
SuicidePeko (string int = true;)
2021-11-11 18:48:00感覺定義函數岔路的時候可以用delegate弄ternary + delegate? 不知道可讀性會如何就是了
作者:
ZooseWu (N5)
2021-11-11 18:50:00小腦袋好痛 我慢慢思考醞釀一下
作者:
Apache (阿帕契)
2021-11-11 18:53:00function map不適用這種情況