多态方法调用不编译

时间:2012-03-18 15:55:20

标签: c# polymorphism abstract-class

我有以下多态方法调用两个抽象的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)'的最佳重载方法匹配有一些无效的参数。感谢

1 个答案:

答案 0 :(得分:3)

你正试图做double-dispatch,C#不支持 在C#中,所有重载决策(dynamic除外)都完全在编译时完成。

相反,您可以使用visitor pattern