自ViewPage继承 [英] Inheriting from ViewPage

查看:166
本文介绍了自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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆