Повторяющийся метод ProcessRequest в ASPX - PullRequest
6 голосов
/ 28 апреля 2010

Я пытаюсь кодировать представления 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

1 Ответ

1 голос
/ 28 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...