我有一个这样设置的页面
public partial class _Default : ViewBasePage<EmployeePresenter, IEmployeeView>,
IEmployeeView
{
...
}
在我的基本页面内
public abstract class ViewBasePage<TPresenter, TView> :
Page where TPresenter : Presenter<TView> where TView : IView
{
protected TPresenter _presenter;
public TPresenter Presenter
{
set
{
_presenter = value;
_presenter.View = GetView(); // <- Works
//_presenter.View = (TView)this; <- Doesn't work
}
}
/// <summary>
/// Gets the view. This will get the page during the ASP.NET
/// life cycle where the physical page inherits the view
/// </summary>
/// <returns></returns>
private static TView GetView()
{
return (TView) HttpContext.Current.Handler;
}
}
我需要做的实际上是强制转换 (TView)_Default,使用我的 GetView() 方法确实以该结果结束。在基本页面内我做不到
_presenter.View = (TView)this;
因为这实际上ViewBasePage<TPresenter,TView>
是它不能直接转换为 TView。
所以我的实际问题是有没有其他方法可以让我感觉不那么老套,如果这是主要选择,那么通过这种方式处理我的页面,我真的需要担心什么吗?
编辑:
我要写的确切部分是
private static TView GetView()
{
return (TView) HttpContext.Current.Handler;
}
因为我觉得在这种情况下能够引用回页面是相当严重的黑客攻击。