例如我写了一个继承于System.Web.UI.Page的类,用于替代Page作为我页面的基类。但如果我在这个类的构造函数中写了任何东西,都会导致继承于这个类的页面无法正常显示,说设计器无法加载类。有没有什么办法可以让构造函数里面的代码在设计期就不运行(那些代码不影响显示和设计效果的),而在运行期再运行呢?我现在只好用选择性编译来解决这个问题,但是这样很烦。哪位大大有更好的方案?或者,我怎么知道这段程序是被设计期调用了。
注:有些代码必须写在构造函数中。写在Init事件中很难看,并且到了ASP.NET 2.0又要改到PreInit中。

解决方案 »

  1.   

    如果那代码处理业务不复杂,也不会有什么错误,可以try{}catch{}
      

  2.   

    henryfan1(每天好心情(*_*)) 测试通过,的确是一个好办法,但还是希望期待更好的办法出现。空的catch块总让人感觉不放心。有没有什么办法知道是谁加载了这个程序集?
      

  3.   

    我最终还是用了 henryfan1(每天好心情)的方案:try{}catch{},
    比较有效,简单,方便。谢谢 henryfan1和其他的朋友!!我估计.NET肯定有判断设计期的方法,有那位朋友知道的话贴上来,谢谢啦!
      

  4.   

    if(!this.DesignMode)
    {
    // do something....
    }
      

  5.   

    我现在用if ( !Assembly.GetCallingAssembly().FullName.StartsWith("mscorlib") )
      

  6.   

    代码完全编译通过以后就不会出现 设计器无法加载:
    这招 在WebForm下好像很管用,但在WinForm下基本就没什么用了
    我也遇到过很多次,我觉得这是 2003 的Bug ,因为那些代码大都是和设计器无关的
      

  7.   

    要完全的Release编译才行啊,但一般都用Debug编译调试哈。
      

  8.   

    结贴说明:jf    1分
    up    2分
      5分
    遇到同样问题的  10分