我有一个接受两个基类参数的函数。在这个函数中,我希望在许多派生类上测试这些参数的类型,然后调用多态函数。请参阅下文,了解我的第一次尝试,但不会编译。
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);
但这也不起作用。
答案 0 :(得分:2)
像这样定义你的基类
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);
}