它们都继承了接口IHttpHandler,因此asp.net将以相同的方式调用它们。但是为什么aspx页面继承了IDispose? Asp.net是如何实现它的?
答案 0 :(得分:2)
ASP.NET 页面继承自基础System.Web.UI.Page
类,后者又实现了继承自System.Web.UI.TemplateControl
的抽象System.Web.UI.Control
类IDisposable
在代码中,有一个Control类Dispose()
的注释:
// Summary: // Enables a server control to perform final clean up before it is released // from memory.
这就是.aspx
文件实际上实现IDisposable
接口的原因。
现在,ASP.NET 处理程序直接实现System.Web.IHttpHandler
接口而不继承任何其他类 - 作为独立接口,它不实现IDisposable
- 它取决于程序员决定是否添加这样的东西。
答案 1 :(得分:0)
所以你的问题是,如何调用aspx(Dispose()
)的Page
代码?
您假设ASP.NET框架只看到IHttpHandler
,无论它是否包含Page
或其他实现。这几乎肯定不是真的; 某些需要调用页面的构造函数。
您可以使用IL Spy之类的工具来尝试查找不同处理的位置以及它的外观。