c# - 无法加载类型 - 自定义 ViewPage 类基类

标签 c# asp.net generics

我正在为 asp.net 应用程序创建一个新的基类,以便从 MVC 创建我自己的强类型 View 版本。该应用程序本身不是 MVC 应用程序。下面是我自定义类的基础。

public class BasePage<T> : Page where T : IPageInfo
{
    public BasePage()
    {
        this.MyPageInfo = IoC.GetInstance<IPageInfo>(); //pseudo-code to populate a property.
    }
}

当我向我的应用程序添加一个新的 WebForm 页面时,我更改了 Page 指令的“继承”属性以指向此 BasePage 类而不是典型的代码隐藏类,其方式与 ASP.Net MVC 强类型相同意见。下面是页面指令的示例。

<%@ Page language="C#" inherits="MyApp.Core.BasePage<MyApp.Content.Search>"%>

在上面的指令中,MyApp.Content.Search 类实现了 BasePage 需要满足通用类型约束的 IPageInfo 接口(interface)。

一切都可以正常编译,但是当我浏览页面时出现错误 Could Not Load Type。我破解了 MVC 2 程序集以查看 ViewPage 是如何完成的,它看起来是相同的基本结构。我环顾了网络,针对此 MVC 错误的一般建议是删除并重新添加对 MVC 的引用。如果我使用的是 MVC,那就太好了;但是我的 BasePage 类和我的 Search 类都在同一个程序集中。我也一直在使用完全限定名称(如图所示)。

任何人都知道我可以尝试如何让它发挥作用吗?

谢谢

最佳答案

map 的魔力<%@ Page language="C#" inherits="MyApp.Core.BasePage<MyApp.Content.Search>"%> MyApp.Core.BasePage 是随 ASP.NET MVC 引入的。 您可以检查 System.Web.Mvc.ViewTypeParserFilter 的实现:

<pages
    validateRequest="false"
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <controls>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
    </controls>
</pages>

关于c# - 无法加载类型 - 自定义 ViewPage 类基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3228795/

相关文章:

c# - Tarjan 算法的非递归版本

javascript - Typeahead 和服务器端 onTextChanged 事件未正确同步

c# - 我的数据源包含一个值,但 EVAL 不在标签中显示该值

generics - 在 kotlin 中,测试泛型类型的值是否实现接口(interface),然后将其用作该接口(interface)的正确方法是什么?

c# - CodeDom 添加对现有文件的引用

c# - 使用 C# 中的 mysqldump 性能低下

c# winforms events 在转义时恢复文本框内容

jquery - 使用 jQuery 检索服务器控件的 ID

java - 使用泛型无需强制转换观察者模式

C#:简化许多类似的隐式运算符方法