次のコード:
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 に追加するだけですが、これは不可能です。