2010-04-28 1 views
6

Я пытаюсь кодировать представления ASP.NET MVC (механизм просмотра WebForms) в F #. Я уже могу написать обычный ASP.NET WebForms ASPX, и он работает нормально, например.Duplicate method 'ProcessRequest' в ASPX

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

поэтому я предполагаю, что у меня есть все в моем web.config правильно настроенном.

Однако, когда я делаю страницу наследоваться от ViewPage:

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

Я получаю эту ошибку:

Compiler Error Message: FS0442: Duplicate method. The abstract method 'ProcessRequest' has the same name and signature as an abstract method in an inherited type.

Проблема, кажется, этот кусок кода, сгенерированного поставщиком 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 

, когда я изменяю директиву страницы, чтобы использовать 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

К сожалению, я не уверен, есть ли способ объявить new virtual элемент в F #. Быстрый просмотр спецификации не показал ничего перспективного ...

Смежные вопросы