У меня может быть базовый класс для представлений в проекте MVC, например:
public class BaseViewPage : System.Web.Mvc.ViewPage
{
public string Something { get; set; }
}
И тогда в ASPX я могу сделать это:
<%@ Page Something="foo" Language="C#" Inherits="MyNamespace.BaseViewPage" %>
Это отлично работает; проблема в том, когда я пытаюсь сделать то же самое с общей версией:
public class BaseViewPage<TModel> :
System.Web.Mvc.ViewPage<TModel> where TModel : class
{
public string Something { get; set; }
}
Когда я пытаюсь использовать это из ASPX, вот так:
<%@ Page Something="foo" Language="C#"
Inherits="MyNamespace.BaseViewPage<SomeClass>" %>
Я получаю сообщение об ошибке:
Ошибка синтаксического анализа атрибута «что-то»: тип «System.Web.Mvc.ViewPage» не имеет открытого свойства с именем «что-то».
Обратите внимание, как он пытается использовать System.Web.Mvc.ViewPage, а не мой класс BaseViewPage. Чтобы сделать его более интересным, если я удаляю атрибут «Something» из директивы Page и помещаю некоторый код в общую версию BaseViewPage (например, OnInit), класс фактически называется / used / instantiated.
Итак, я делаю что-то не так или это ограничение / ошибка? Спасибо.