zoukankan      html  css  js  c++  java
  • 关于自己定义Page的一个小问题

    关于自己定义Page的一个小问题

    [Key word:Page]
    [测试环境:OS,WinXp+sp2;开发环境,Microsoft VS.NET2003;.Framework,1.1]

    前些时候遇到这样的一个问题:
    我自己定义了一个通用Page,继承自System.Web.UI.Page
    public class BasePage:Page{
    }
    完了之后,又这样做了一个简单的继承:
    public class AdminPage:BasePage{
    }
    然后在我的设计页面里的Web Form继承自AdminPage的,会出现错误,提示父类不能实现而不能使用设计模式。

    这是可能理解的,因为在设计的时候,你的web form要实现这样的一个类,当然这个类得是存在的。但没想到遇到以下几个问题的时候,也会出现同样的问题:
    1、自己定义的Page类里有任何的纯虚函数的时候,也没有办法实现(在设计时),且不说多次继承。
    2、在与构造函数相关的所有方法中,有访问不到的数据时,也会出现错误。

    这里我讨论一下第二种情况以及解决方法,先看我的一个继承自Page类的代码(部份):

        public class BasePage : Page,IUIPage
        
    {
            
    fileds

            
    public BasePage()
            
    {
                
    this.m_showDebugMsg    = WaveSystem.SystemVarible["ShowDebugMessage"].ToString().ToLower()=="yes";
                
    this.m_showCopyRight    = WaveSystem.SystemVarible["ShowCopyRight"].ToString().ToLower()=="yes";
            }

        }

    这里的WaveSystem.SystemVarible["ShowDebugMessage"]在运行时会从数据库里取得相关数据。而这样给我带来的后果是:所有继承自BasePage的web form都不能使用设计页面了(都是HTML模式)。这让我很郁闷,因为这些信息也只有在运行时才有意义,设计环境不知道,所以它必须在设计的时候也取得WaveSystem.SystemVarible["ShowDebugMessage"]的值,而这显然是不能实现的。

    就这个问题,上次也简单的讨论过一次,后来没找到解决方法,只好用常量先代替:
        this.m_showDebugMsg  = true;
        this.m_showCopyRight = false;

    然而今天偶然遇到一个方法,因为我不能绝对保证在运行时也可以得到WaveSystem.SystemVarible["ShowDebugMessage"]的值,所以修改了一下代码(部份):

            public BasePage()
            
    {
                
    try
                
    {
                    
    this.m_showDebugMsg        = WaveSystem.SystemVarible["ShowDebugMessage"].ToString().ToLower()=="yes";
                    
    this.m_showCopyRight    = WaveSystem.SystemVarible["ShowCopyRight"].ToString().ToLower()=="yes";
                }

                
    catch
                
    {
                    
    this.m_showDebugMsg        = true;
                    
    this.m_showCopyRight    = false;
                }

            }

    歪打正着,没想到这样一改,在设计模式下也通过了(注意,要先编译一下这个页面)。那么简单的结论就是:设计web form的时候,环境是在“运行”我们的部份代码的。而又不是真正的运行,甩以有一些只有在运行时才能得到的数据,在设计时如果“访问”到了,那么就会出现这样的错误。
    我不知道VS.net2005里是否也会有这样的问题,但不管怎样,这次偶然的结果为我提供了一个方法解决这一问题。而关于虚函数及多次继承问题,还有待解决。

    ================================
      /\_/\                        
     (=^o^=)  Wu.Country@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    每日汇报
    每周总结
    构建之法阅读笔记2
    每周总结
    每周总结
    体温上报软件开发
    体温上报软件开发
    构建之法阅读笔记1
    体温上报软件开发
    大二下学期团队项目(爬取豆瓣电影)
  • 原文地址:https://www.cnblogs.com/WuCountry/p/312171.html
Copyright © 2011-2022 走看看