以下代码:
class Program
{
static P1 p = new P1();
static void Main(string[] args)
{
var t = new P2();
p = t;
p.DoWork();
t.DoWork();
Console.ReadLine();
}
}
public class P1
{
public void DoWork()
{
Console.WriteLine("Test1");
}
}
public class P2: P1
{
new public void DoWork()
{
Console.WriteLine("Test2");
}
}
将打印出:
Test1
Test2
无论如何强制调用 p.DoWork() 使用 P2 类中的实现。实际上,P1 类在第三方编译的程序集中,因此我无法修改 P1 类的任何代码。通常我只会将 virtual 关键字添加到 P1 但这是不可能的。