我有以下多态方法调用两个抽象的Segment参数,但是我有一个与此调用相关的错误
public static void Connected(Segment s1, Segment s2)
{
s1.Connected(s2);
//further working code
}
我已经定义了许多抽象方法
public abstract bool Connected(derivedSegment0 s);
public abstract bool Connected(derivedSegment1 s);
public abstract bool Connected(derivedSegment2 s);
public abstract bool Connected(derivedSegment3 s);
每个派生类都实现了这些(在本例中总共16个)
public override bool Connected(derivedSegment0 s)
{
//working code
}
我不清楚为什么调用不能编译。我有错误CS1502:'Segment.Connected(derivedSegment1)'的最佳重载方法匹配有一些无效的参数。感谢
答案 0 :(得分:3)
你正试图做double-dispatch,C#不支持
在C#中,所有重载决策(dynamic
除外)都完全在编译时完成。
相反,您可以使用visitor pattern。