[问题] 不同型态物件存在同个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