可能重複:
Why is the ‘this’ keyword required to call an extension method from within the extended class擴展方法需要「this」?
使用Visual Studio 2012
Sitefinity 5. *定義命名空間中的Telerik.Sitefinity.Web.UI
爲System.Web.UI.MasterPage
一些推廣方法。
如果我包括該命名空間一個參考,我可以使用其指示頁面的被正常再現,或由內部搜索引擎的一個特定擴展方法:
using Telerik.Sitefinity.Web.UI;
namespace MyWebApp
{
public partial class MyMasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
/// hide common page elements.
/// GetIndexRenderMode() returns "Normal" if the page is being rendered
/// normally, but not if the search engine is indexing the page.
if (this.GetIndexRenderMode() != IndexRenderModes.Normal)
{
headerPlaceholder.Visible = false;
footerPlaceholder.Visible = false;
navigationPlaceholder.Visible = false;
}
}
}
}
然而,如果刪除this
從if(...)
語句中,編譯器不再找到擴展方法。
什麼給?我以前從未見過this
是必要的情況,除了解決類成員和接口成員或參數之間的歧義之外。
「'此強制性擴展方法?」將是一個更好的標題imho。 –
「this」需要名稱解析。 –
而不是重複整點檢查答案 - http://stackoverflow.com/questions/3510964/why-is-the-this-keyword-required-to-call-an-extension-method-from-within -the-e – Kami