有什么办法能让继承自某个特定基类的C#类型的所有属性都能自动利用ViewState来管理会话数据么?我想到的办法:
让基类来管理属性的ViewState保存和加载:
在基类中用反射获取到对象实例的所有的属性及其值,然后在适当的时机保存到ViewState或者从ViewState加载数据设置属性值。这样继承了该类的子类就不必再显式地管理ViewState的保存和加载了。不过我对反射不熟悉,不知道这样的想法行不行得通?试着实现,但是问题多多;或者压根不该用这样的方法?
对于使用ViewState的所有类,它们都继承自同一个基类,这个是可以保证的。对每增加一个属性就有可能要为其写 ViewState 的保存和加载代码实在是不赞成,这样机械的重复运动实在不适合人工。有没有好的建议?

解决方案 »

  1.   

    如果是想动态的维护类中的属性或者方法,可以利用反射来实现,和ViewState有什么关系?再者,ViewState当前页面有效.
      

  2.   

    正是对ViewState的管理才引发对 “动态的维护类中的属性或者方法”的需求。这里ViewState 不是特指当前页的ViewState属性,而是指当前对象存储在ViewState中的值集。在 " System.Web.UI.UserControl "或者"System.Web.UI.Page"类中有两个可以重写的函数: SaveViewState 和 LoadViewState ,就是专门用来管理对象的页面状态的,我想的是在一个基类之中重写这两个函数,并对继承自该基类的子类的所有需要进行 ViewState 管理的属性或者字段进行管理,这样子类之中就不必再重写一遍  "SaveViewState" 和 "LoadViewState"了。