我已經創建了一個擴展方法爲ASP.NET MVC的ViewPage中調用擴展方法所需要的「這個」關鍵字,例如:爲什麼是從擴展的類
public static class ViewExtensions
{
public static string Method<T>(this ViewPage<T> page) where T : class
{
return "something";
}
}
當調用從該方法視圖(從ViewPage
派生),我得到的錯誤「CS0103:名稱爲‘方法’不存在於當前上下文存在」除非我用this
關鍵字來調用它:
<%: Method() %> <!-- gives error CS0103 -->
<%: this.Method() %> <!-- works -->
爲什麼this
需要關鍵字?還是沒有它的工作,但我錯過了什麼?
(我認爲必須有這個問題的一個副本,但我沒能找到一個)
更新:
由於Ben Robinson says的語法來調用擴展方法只是編譯糖。那麼爲什麼編譯器不能自動檢查當前類型的基類型的擴展方法,而不需要this關鍵字呢?
@ M4N - 這看起來像你之後可能的重複:[爲什麼我不能在擴展List的類中調用OrderBy?](http://stackoverflow.com/questions/2144034/why-canti-i -all-order-in-a-class-that-extends-list) – GenericTypeTea 2010-08-18 10:23:23
@GenericTypeTea:是的,這是一個類似的問題。但我不問如何調用擴展方法(我*知道*我必須添加'this'關鍵字),但我問爲什麼需要'this'關鍵字。我更新了我的問題。 – M4N 2010-08-18 10:29:56
@ M4N - 好點,他們說必須完成,但答案並沒有給出足夠的解釋。 – GenericTypeTea 2010-08-18 10:41:57