このように設定されたページがあります
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;
}
これは、このコンテキストでページに戻って参照できるようにするためのかなりひどいハックだと思います。