2011-08-07 33 views
1

我使用第三方库的A类。类有方法M如何解决这个继承难点?

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

,我写我的B类方法M

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

    } 
} 

然后在C类我想调用父类的方法MA

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

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

+0

如果您不想重写B,则可以使用由一个整数组成的数组调用该方法。那么它总是会解决B中的方法。 –

回答

6

我认为((A)this).M(1)会帮助你。请注意,如果这些方法是虚拟/重写的 - 事情可能会改变。

因此,我认为这种方式隐藏方法是一个糟糕的想法,沟通不良的设计选择或一些hackery。当我真的需要这个时,至少我不能想出一个办法。

+3

确实。最好重新命名B.M以区别于A.M. –