[問題] 不同型態物件存在同個List

作者: dreak (derek)   2014-01-14 17:29:59
各位好
目前碰到的問題是,我想把不同類型的物件儲存在同個List,
目前的作法如下,
建立一個BaseClass(裡面包含共用的function),
再分別寫A、B、C三個Class繼承BaseClass,
在A、B、C中分別包含了獨立的function(BassClass裡沒有的function),
然後在主程式建立A、B、C這三個物件時,分別塞入List<BaseClass>這個List中,
這樣做看似是可行,但當我想要呼叫A物件裡獨立的function時(BassClass裡沒有),
似乎沒有辦法,請問我這樣的作法是對的嗎?或者有什麼更好的作法?
有什麼方法可以讓我呼叫A物件裡獨立的function?
作者: Eleganse (艾勒更斯)   2014-01-14 18:03:00
關鍵字:list泛型
作者: m339606 (mize)   2014-01-14 20:07:00
你已經指出問題了 BaseClass沒有A的獨立functionA的Class結構在進去List時已經被轉換了,類似(BaseClass)A你只要取出來的時候再轉換回A就好 ((A)List[?]).fun()如果你說同時會有ABC的List就比較麻煩了編譯時你並不知道他是哪個,建議用GetType搭配Reflection當然最簡單的方式就是將abc各自獨立的Fun全部寫進去Base然後將Base的fun宣告成virtual讓子類實現
作者: ssccg (23)   2014-01-14 21:19:00
如果你ABC沒有共通的功能要呼叫,塞在一起有什麼好處?
作者: m339606 (mize)   2014-01-14 23:33:00
華生你突破盲腸炎了

Links booklink

Contact Us: admin [ a t ] ucptt.com