首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-07-19 
用什么方法可以实时的把基类转换成子类class Baseclass A : Basefn(Base A)fn(A a)Base base new A()fn

用什么方法可以实时的把基类转换成子类
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,然后各子类重写这个方法就好了嘛。

热点排行