如何在运行时确定派生类并允许调用多态方法
本文关键字:许调用 调用 方法 多态 运行时 派生 | 更新日期: 2023-09-27 18:28:19
我有一个函数,它接受两个基类参数。在这个函数中,我希望在许多派生类上测试这些参数的类型,然后调用多态函数。请参阅下面查看我的第一次尝试,但它不会编译。
public static double Intersect(baseClass s0, baseClass s1)
{
if (s1 is derivedClassB) return (s0 as derivedClassA).PolyMethod((derivedClassB)s1);
else if (s1 is derivedClassC) return (s0 as derivedClassA).PolyMethod((derivedClassC)s1);
else return 0.0;
}
我想我可以用之类的东西
Type dType = s0.GetType();
(s0 as dType).PolyMethod(derivedClassB) s1);
但这也不起作用。
像这样定义基类
public abstract BaseClass
{
public abstract double PolyMethod(BaseClass s);
}
定义类似的派生类
public DerviedClassX : BaseClass
{
public override double PolyMethod(BaseClass s)
{
return 0.0; // Return something usefull here.
}
}
然后你的方法可以像这个一样简化
public static double Intersect(BaseClass s0, BaseClass s1)
{
return s0.PolyMethod(s1);
}