问题在ViewPage上调用扩展方法

| 我为ViewPage创建了以下扩展方法:
using System.Web.Mvc;

namespace G3Site {
    public static class ViewPage_Extensions {
        public static void Test(this ViewPage vp) {
            vp.Writer.Write(\"this is a test\");
        }
    }
}
然后,我在aspx页面上放置导入语句
<%@ Import Namespace=\"G3Site\" %>
我可以通过这样很好地调用Test()方法:
<% this.Test(); %>
但是,当我尝试调用它而不参考以下内容时:
<% Test(); %>
我收到编译器错误:
CS0103: The name \'Test\' does not exist in the current context
有谁知道为什么会这样,并且有办法解决吗?     
已邀请:
根据C#语言规范(第7.6.5.2节),C#编译器要求将扩展方法称为表达式的“ off”(例如变量或对对象的引用)。     
这不仅是ASP.Net MVC视图的限制,这是C#中扩展方法的一般规则:
public class SomeClass
{
    public void Method()
    {
        ExtensionMethod();
    }
}

public static class Extensions
{
    public static void ExtensionMethod(this SomeClass sc) { }
}
这不会编译,因为C#编译器要求使用实例调用扩展方法。为何如此决定,可能是由于某些极端的情况,只有埃里克·利珀特才可以梦想     

要回复问题请先登录注册