我为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所说,调用扩展方法的语法只是编译器糖。那么为什么编译器在不需要this关键字的情况下不能自动检查当前类型的基本类型的扩展方法呢?