我正在尝试在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
答案 0 :(得分:1)
不幸的是,我不确定是否有任何方法可以在F#中声明new virtual
成员。快速浏览一下规范并没有发现任何有希望的......