我已经为 ASP.NET MVC 视图创建了一个扩展方法,例如:
public static class ViewExtensions
{
public static string Method<T>(this ViewPage<T> page) where T : class
{
return "something";
}
}
当从 View (从 ViewPage
派生)调用此方法时,除非使用 this
关键字调用它,否则会得到错误“ CS0103: “ Method”名称在当前上下文中不存在”:
<%: Method() %> <!-- gives error CS0103 -->
<%: this.Method() %> <!-- works -->
为什么需要 this
关键字? 或者没有它也能工作,但是我遗漏了什么?
(我想这个问题一定有重复的地方,但是我找不到)
更新 :
作为 本 · 罗宾逊说,调用扩展方法的语法只是编译器的代码。那么为什么编译器不能在不需要 this 关键字的情况下自动检查当前类型的基类型的 for 扩展方法呢?