如何解决这个继承难度?

时间:2011-08-07 08:48:51

标签: .net inheritance

我使用来自第三方库的课程A。类有方法M

public class A
{
    public int M(int x)
    {
        ...
    }
}

我用方法B写了我的课M

public class B : A
{
    public void M(params int[] xs)
    {

    }
}

然后在课程C中,我想调用父类M的方法A

public class C : B
{
    public void M2()
    {
        int result = M(1);
    }
}

但编译器将此行标记为错误。它尝试使用类M的方法B,返回void 如何在不重写类B的情况下解决此冲突?

1 个答案:

答案 0 :(得分:6)

我认为((A)this).M(1)可以帮到你。请注意,如果这些方法在某处被虚拟/覆盖 - 事情可能会改变。

如上所述,我认为以这种方式隐藏方法是一个糟糕的想法,沟通不良的设计选择或一些hackery。至少我真的不需要这么想。