zoukankan      html  css  js  c++  java
  • 接口IStateManager的使用心得

    在WebControls设计中,我们使用IStateManager来保存类的成员状态。

    IStateManager的原理是:使用LoadViewState从StateBag中提取对象,使用SaveViewState将对象保存到StateBag中,实现IStateManage接口提供的这两个方法来一层一层的Load和Save,最终还是执行基类Control中对应的方法。

            protected override void LoadViewState(object savedState)
            
    {
                
    if (savedState != null)
                
    {
                    
    object[] obj = (object[]) savedState;
                    
    //从数组中提取各个成员
                    this.Text = obj[0].ToString(); 
                    
    this.Value = obj[1].ToString();
                    
    this.ToolTip = obj[2].ToString();
                }

            }


            
    protected override object SaveViewState()
            
    {
                
    object[] obj = new object[3];
                
    //将成员保存到数组中
                obj[0= this.Text;
                obj[
    1= this.Value;
                obj[
    2= this.ToolTip;
                
    return obj;
            }

    如果保存的只有两个成员,可以使用Pair类来代替object,如果是三个,可以使用Triplet来代替object。

    当然如果此类中还包括集合类型的成员,可以使集合实现IStateManage,并实现这两个接口,在以上的SaveViewState中可以这样使用:obj[1] = this.items.SaveViewState(); LoadViewState中,将obj[1]转成集合类,并循环的添加items即可。
  • 相关阅读:
    Python基础练习
    AngularJS学习之旅—AngularJS 过滤器(七)
    AngularJS学习之旅—AngularJS 控制器(六)
    AngularJS学习之旅—AngularJS Scope作用域(五)
    AngularJS学习之旅—AngularJS 模型(四)
    AngularJS学习之旅—AngularJS 指令(三)
    AngularJS学习之旅—AngularJS 表达式(二)
    AngularJS学习之旅—AngularJS 简介(一)
    SQL Server排名或排序的函数
    Asp.net导出Excel/Csv文本格式数据
  • 原文地址:https://www.cnblogs.com/faib/p/766054.html
Copyright © 2011-2022 走看看