在继承类中隐藏/重载辅助方法时基类方法的行为
本文关键字:基类 方法 类方法 继承 隐藏 重载 | 更新日期: 2023-09-27 18:18:44
public class Foo
{
public string Test()
{
return GetName();
}
public string GetName()
{
return "Foo";
}
}
public class Bar : Foo
{
public new string GetName()
{
return "Bar";
}
}
new Foo().Test(); // Foo
new Bar().Test(); // also Foo
我试图为Foo
创建一个"包装器",这样我就可以在GetName()
产生意外值时对Test()
的行为进行单元测试。我不能直接影响Foo
中GetName()
的行为,因为它依赖于ASP。. NET管道事件。
I was hope
new Bar().Test();
将返回"Bar",但显然我误解了继承模型。
有什么方法可以达到我所需要的吗?
GetName需要在Foo中是虚拟的,并在Bar类中重写。这样的:
public class Foo
{
public string Test()
{
return GetName();
}
public virtual string GetName()
{
return "Foo";
}
}
public class Bar : Foo
{
public override string GetName()
{
return "Bar";
}
}
编辑:但是我现在从你的新评论中看到,改变Foo可能不是你的选择。