我試圖刷新我的記憶,但找不到Google的答案。將派生類轉換爲基類
public class BaseClass
{
public virtual void DoSomething()
{
Trace.Write("base class");
}
}
public class DerivedClass : BaseClass
{
public override void DoSomething()
{
Trace.Write("derived class");
}
}
如果我創建派生類的實例,我怎麼把它轉換到它的基類,所以當DoSomething的()被調用時,它僅使用基類的方法?
一個動態轉換仍然調用派生類的重載方法:
DerivedClass dc = new DerivedClass();
dc.DoSomething();
(dc as BaseClass).DoSomething();
輸出:「派生類」
失敗的一種傳承的目的,通常在您的覆蓋,雖然你會手動調用'base.DoSomething( )'但是除非你可以用反思做點什麼。 –
哎喲,我認爲這會是我忽略的一些事情。謝謝 – Levitikon
[如何調用(非虛擬)虛擬方法的原始實現?](http://stackoverflow.com/questions/3378010/how-to-invoke-non-virtually-the-original-implementation -of-a-virtual-method) – Ani