2014-05-03 25 views
2

在.NET中我試圖猴子修補第三方庫。我創建了一個新的類,即從父類派生的類Child繼承的子類。在Grandchild的重寫方法中,我需要跳過Child並調用Parent。那可能嗎?換句話說,我想這樣做:如何在.NET中引用特定的基類方法?

public class Grandchild : Child { 
    public void override MyMethod() { 
     // illegal syntax examples, but how can I invoke Parent.MyMethod? 
     base.base.MyMethod(); // nope... 
     Parent.MyMethod(); // nope... 
    } 
} 
+1

你確定繼承是你需要的嗎? – Areks

+0

請參閱:http://stackoverflow.com/questions/2323401/how-to-call-base-base-method –

回答

6

這根本無法完成,甚至沒有反思,並有一個很好的理由 - 安全。

如果您發佈的課程實施了一些業務規則,並且客戶可以跳過這些規則,則可能會遇到巨大的安全漏洞。這種基本的多態規則根本不能違反。

安全性也是爲什麼表達樹不能包含對base的引用,如Eric Lippert here所解釋的。

//this is illegal 
Expression<Func<string>> nonVirtualCall =() => base.Method(); 
+0

重複問題的答案給出了幾種做法。沒有直接的方法,但可以通過幾種解決方法之一進行。 –

相關問題