读书人

用什么步骤可以实时的把基类转换成子类

发布时间: 2012-07-19 16:02:19 作者: rapoo

用什么方法可以实时的把基类转换成子类
class Base
class A : Base

fn(Base A)
fn(A a)

Base base = new A();
fn(base); //调用的是fn(Base A)

怎么让它调用fn(A a)
不要if或者switch的

[解决办法]
override,virtual.....
[解决办法]
在你这种设计下,判断是无法避免的,因为设计时无法明确知道需要调用哪个重载
[解决办法]
用泛型吧 fun<T>(T A) where T:Base
fun<A>(A)
fun<An>(A)
[解决办法]
LZ需要的,是运行时的重载决策。在没有实现DLR的C# 3.5,只能用反射。
但是既然需要运行时的多态,为什么不考虑3L的方案——重写?
在基类中定义虚方法fn,然后各子类重写这个方法就好了嘛。

读书人网 >C#

热点推荐