自ViewPage继承 [英] Inheriting from ViewPage
本文介绍了自ViewPage继承的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有可能从两个的ViewPage和的ViewPage&LT继承; T> ??还是我必须同时实现。目前,这是我对的ViewPage。我是否需要重复自己和的ViewPage&LT这样做; T> ??
公共类BaseViewPage:的ViewPage
{
公共布尔的loggedIn
{
得到
{
如果(ViewContext.Controller是BaseController)
返回((BaseController)ViewContext.Controller).LoggedOn;
其他
返回false;
}
}
}
解决方案
创建两个版本:
公共类BaseViewPage:的ViewPage
{
//把您的自定义code在这里
}公共类BaseViewPage<&的TModel GT; :BaseViewPage那里的TModel:类
{
// code从MVC源借来的 私人的ViewDataDictionary<&的TModel GT; _viewData; [System.Diagnostics程序codeAnalysis.Sup pressMessage(Microsoft.Usage,CA2227:CollectionPropertiesShouldBeReadOnly)。]
公开新的ViewDataDictionary<&的TModel GT; ViewData的{
获得{
如果(_viewData == NULL){
SetViewData(新的ViewDataDictionary&所述;的TModel>());
}
返回_viewData;
}
集合{
SetViewData(值);
}
} 保护覆盖无效SetViewData(可视数据的ViewDataDictionary){
_viewData =新的ViewDataDictionary<&的TModel GT;(可视数据); base.SetViewData(_viewData);
}
}
然后
公共类MyCustomView:BaseViewPage
{
}要么公共类MyCustomView:BaseViewPage< MyCustomViewData>
{
}
Is it possible to inherit from both ViewPage and ViewPage<T>?? Or do I have to implement both. Currently this is what I have for ViewPage. Do i need to repeat myself and do the same for ViewPage<T>??
public class BaseViewPage : ViewPage
{
public bool LoggedIn
{
get
{
if (ViewContext.Controller is BaseController)
return ((BaseController)ViewContext.Controller).LoggedOn;
else
return false;
}
}
}
解决方案
Create both versions:
public class BaseViewPage : ViewPage
{
// put your custom code here
}
public class BaseViewPage<TModel> : BaseViewPage where TModel : class
{
// code borrowed from MVC source
private ViewDataDictionary<TModel> _viewData;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public new ViewDataDictionary<TModel> ViewData {
get {
if (_viewData == null) {
SetViewData(new ViewDataDictionary<TModel>());
}
return _viewData;
}
set {
SetViewData(value);
}
}
protected override void SetViewData(ViewDataDictionary viewData) {
_viewData = new ViewDataDictionary<TModel>(viewData);
base.SetViewData(_viewData);
}
}
then
public class MyCustomView : BaseViewPage
{
}
or
public class MyCustomView : BaseViewPage<MyCustomViewData>
{
}
这篇关于自ViewPage继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文