Напоролся на засаду при указании inherits для страницы. Не получается указать базовый класс — генерик.
Использую синтаксис inherits="System.Web.Mvc.ViewPage.[MvcApplication7.Models.LogOnModel]", в ответ на котороый получаю ошибку парсера "тип не найден". Если указать тип в формате с#, то aspx парсер его проглатывает, но начинает ругаться компилятор немерле, поскольку это имя типа попадет в сгенерированный *.n файл в исходном виде.
Покопался в исходниках mvc, оказывается mvc хитрым образом обрабатывает атрибут inherits. Если mvc определяет, что в качестве базового класса используется генерик, то подменяет название базового класса на System.Web.Mvc.ViewPage, а исходное значение запоминает во внутренних структурах. Для определения генерика используется такая нехитрая функция:
private static bool IsGenericTypeString(string typeName)
{
return (typeName.IndexOfAny(new char[] { '<', '(' }) >= 0);
}
видно, что Немерле с квадратными скобками тут пролетает
.
Я пока вижу решение только в виде хака: указывать базовый тип в формате c#, а при генерации *.n файла подменять в названиях типов синтаксис шарпа на синтаксис немерле. Для этого нужно поправить метод NemerleCodeGenerator.GetTypeOutput
Но честно говоря мне такой способ совсем не нравится.
Сталкивался ли ктонибудь с этим и получилось ли найти решение?
Здравствуйте, seregaa, Вы писали:
S>Сталкивался ли ктонибудь с этим и получилось ли найти решение?
Я сталкивался. Пришел к решению о замене ViewEngine. Впрочем наверное можно просто подшаманить стандартый от MVC.
... << RSDN@Home 1.2.0 alpha 4 rev. 1468>>