2010-04-28 12 views
6

Sto provando a codificare le viste ASP.NET MVC (motore di visualizzazione WebForms) in F #. Posso già scrivere ASPF WebForms ASP.NET normale e funziona bene, ad es.Duplicate method 'ProcessRequest' in ASPX

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

quindi presumo di avere tutto nel mio web.config impostato correttamente.

Tuttavia, quando faccio la pagina di ereditare da ViewPage:

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

ottengo questo errore:

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

Il problema sembra essere questo pezzo di codice generato dal provider 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 

quando cambio la direttiva Page per utilizzare C#, il codice generato è:

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

che ovviamente funziona bene e AFAIK non è semanticamente uguale al codice F # generato.

sto usando 4.0.30319.1 NET (RTM) e MVC 2 RTM

risposta

1

Purtroppo, non sono sicuro se c'è un modo per dichiarare un membro new virtual in F #. Una rapida occhiata alle specifiche non ha rivelato nulla di promettente ...