我想在我的页面类中实现泛型,例如:
Public Class MyClass(Of TheClass)
Inherits System.Web.UI.Page
但要使其工作,我需要能够实例化类(使用正确的通用类类型)并加载页面,而不是常规的 Response.Redirect。有没有办法做到这一点 ?
我不确定完全理解你想要做什么。如果您想要一个通用页面,您可以使用通用 BasePage 并将您的通用方法放入该 BasePage:
Partial Public Class MyPage
Inherits MyGenericBasePage(Of MyType)
End Class
Public Class MyGenericBasePage(Of T As New)
Inherits System.Web.UI.Page
Public Function MyGenericMethod() As T
Return New T()
End Function
End Class
Public Class MyType
End Class
说从泛型类型派生类型的答案是一个很好的答案。但是,如果您的解决方案涉及基于在运行时确定的类型抓取页面,那么您应该能够处理当前 HttpApplication 上的 PreRequestHandlerExecute 事件。
这个事件在请求被转发到处理程序之前被调用,所以我相信你可以将你的页面注入到 HttpContext.Current.Handler 属性中。然后,您可以根据需要创建页面。