Я пытаюсь кодировать представления ASP.NET MVC (механизм просмотра WebForms) в F #. Я уже могу написать обычный 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