ASPX中的重复方法'ProcessRequest'

时间:2010-04-28 04:58:55

标签: asp.net-mvc f#

我正在尝试在F#中编写ASP.NET MVC视图(WebForms视图引擎)。我已经可以编写常规的ASP.NET WebForms ASPX,它可以正常工作,例如。

<%@ Page Language="F#" %>
<%
for i in 1..2 do %>
<%=sprintf "%d" i %>

所以我假设我的web.config中的所有内容都已正确设置。

但是,当我从ViewPage继承页面时:

<%@ Page Language="F#" Inherits="System.Web.Mvc.ViewPage" %>

我收到此错误:

  

编译器错误消息:FS0442:   重复的方法。抽象方法   'ProcessRequest'具有相同的名称和   签名作为一种抽象方法   继承的类型。

问题似乎是由F#CodeDom提供程序生成的这段代码:

[<System.Diagnostics.DebuggerNonUserCodeAttribute>]
abstract ProcessRequest : System.Web.HttpContext -> unit
[<System.Diagnostics.DebuggerNonUserCodeAttribute>]
default this.ProcessRequest  (context:System.Web.HttpContext) =
    let mutable context = context
    base.ProcessRequest(context) |> ignore

当我将Page指令更改为使用C#时,生成的代码为:

[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public new virtual void ProcessRequest(System.Web.HttpContext context) {
    base.ProcessRequest(context);
}

当然可以正常工作,AFAIK在语义上与生成的F#代码不同。

我正在使用.NET 4.0.30319.1(RTM)和MVC 2 RTM

1 个答案:

答案 0 :(得分:1)

不幸的是,我不确定是否有任何方法可以在F#中声明new virtual成员。快速浏览一下规范并没有发现任何有希望的......