即使當前實例是派生類,我們如何從基類中的另一個方法調用虛方法?即使當前實例是派生類時,我們如何從基類中的另一個方法調用虛方法?
我知道我們可以從派生類中的方法,通過使用base.Method2()調用方法二在的基地類,但我想要做的就是從其他虛擬方法調用它在基地類。可能嗎?
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Base b = new Derived();
b.Method1();
}
}
public class Base
{
public virtual void Method1()
{
Console.WriteLine("Method1 in Base class.");
this.Method2(); // I want this line to always call Method2 in Base class, even if the current instance is a Derived object.
// I want 'this' here to always refer to the Base class. Is it possible?
}
public virtual void Method2()
{
Console.WriteLine("Method2 in Base class.");
}
}
public class Derived : Base
{
public override void Method1()
{
Console.WriteLine("Method1 in Derived class.");
base.Method1();
}
public override void Method2()
{
Console.WriteLine("Method2 in Derived class.");
}
}
}
有了上面的代碼,它會輸出:
Method1 in Derived class.
Method1 in Base class.
Method2 in Derived class.
而我所期望的是:
Method1 in Derived class.
Method1 in Base class.
Method2 in Base class.
我想可重寫的方法,但它可以直接在基類在需要時被調用。不管怎麼說,還是要謝謝你。 – 2012-03-29 09:42:24
@newgps您將需要將代碼拉出到另一種方法,然後根據Henrik的解決方案和我的建議。 – 2012-03-29 09:44:18