2010-04-28 11 views
6

Estoy intentando codificar vistas ASP.NET MVC (motor de vista de WebForms) en F #. Ya puedo escribir regularmente ASP.NET WebForms ASPX y funciona bien, p.Método duplicado 'ProcessRequest' en ASPX

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

así que asumo que tengo todo en mi web.config configurado correctamente.

Sin embargo, cuando hago heredar la página de ViewPage:

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

consigo este error:

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

El problema parece ser la siguiente pieza de código generado por el proveedor de 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 

cuando cambio la directiva de página para usar C# en su lugar, el código generado es:

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

que por supuesto funciona bien y AFAIK no es semánticamente el mismo que el código F # generado.

estoy usando 4.0.30319.1 .NET (RTM) y MVC 2 RTM

Respuesta

1

Por desgracia, no estoy seguro de si hay alguna manera de declarar un miembro new virtual en F #. Una mirada rápida a través de la especificación no apareció nada prometedor ...