我在使用第三方库时发现了这种行为,我需要隐藏和更改其中一种方法。为什么一个子类需要实现一个父母界面来隐藏C#中父母方法之一?
我有以下设置:
interface IBaseInterface
{
string MethodToHide();
}
class BaseClass : IBaseInterface
{
public string MethodToHide()
{
return "BaseClass";
}
}
class ChildClass : BaseClass
{
new public string MethodToHide()
{
return "ChildClass";
}
}
为什么当我运行以下命令:
var i = (IBaseInterface) (new ChildClass());
Console.WriteLine(i.MethodToHide());
输出
BaseClass的
,但改变ChildClass签名
class ChildClass : BaseClass, IBaseInterface
时,输出为
ChildClass
为什么我需要明确指定接口的BaseClass的方法,通过隐藏ChildClass?
hidden!=被覆盖 – Greg 2011-03-11 18:43:28