web基础类(继承System.Web.UI.Page)的问题解决方案~

相信很多人在写项目的时候会构建一个继承于System.Web.UI.Page的类,将很多的公用部分代码放入其中,如权限检测、出错处理(方便嘛)等,但是在构建这样一个类的时候有一个问题是需要特别注意,就是类的属性定义,我们来看下面这个属性

public Hashtable EffectSecurityChecker

                   
{

                            
set

                            
{

                                     Application[“aa”] 
= value;

                            }


                            
get

                            
{

                                     
if ( Application[“aa”] == null)

                                     
{

                                               Application[“aa”] 
= new Hashtable();

                                     }


 

                                     
try

                                     
{

                                               
return (Hashtable)Application[“aa”];

                                     }


                                     
catch

                                     
{

                                               Application[“aa”] 
= new Hashtable();

                                               
return (Hashtable)Application[“aa”];

                                     }


                            }


                   }


 


乍一看好像没什么问题,连出错处理都做好了,而且编译也可以成功通过。但其忽略了一点,这个基础页面类是一个界面类,什么问题?界面类被继承后其属性会被子类初始化,当我们的子类继承了这个类后它自己的web编辑界面就再也打不开了(郁闷吧~),所以这里如果要用到类似的功能可以这样修改

private Hashtable _EffectSecurityChecker = null;

public Hashtable GetEffectChecker()

{

         
if ( Application[“aa”] == null)

                   
{

                            Application[“aa”] 
= new Hashtable();

                   }


                   
try

                   
{

                            
return (Hashtable)Application[“aa”];

                   }


                   
catch

                   
{

                            Application[“aa”] 
= new Hashtable();

                            
return (Hashtable)Application[“aa”];

                   }


}



所有子类通过GetEffectChecker()方法来进行调用,因为方法不影响界面初始化,所以子类的web界面依然可以正常编辑

 

有一点需要强调一下,第一种做法不会影响程序的运行

posted @ 2004-08-02 10:23  mp3 swf  阅读(1682)  评论(6编辑  收藏  举报