小弟初学反射(C#)做了一个父窗体
父窗体里面有一个字段(我把这个字段公共了)是一个对象字段,,这个对象是通过配置文件反射得到的。
我在父窗体创建了这个对象然后写了个子窗体继承这个父窗体,但是子窗体的设计出错。如果把父窗体的那个通过反射得到对象的字段注释了,子窗体就完全没问题。如果子窗体需要用到那个通过反射得到的对象,子去创建,也步会有问题。小弟请问大侠们,为什么在父窗体创建就会报错呢?

解决方案 »

  1.   


    父窗体里面的UserStateService对象的创建
            public UserStateService userStateService = null;//公共的,因为很多子窗体都要用到这个对象,所以我想在父类里面一次创建
           
            public BaseEditTeacehrForm()
            {
                InitializeComponent();            userStateService = new UserStateService();
            }//UserStateService对象的创建
    public UserStateService()
            {
                userStateDao = DAOFactory.CreateUserState();//这个是工厂通过配置文件创建的dao对象
            }如果这时候有个子窗体继承这个对象,编译可以通过,程序运行也没问题,但是问题就在与,子窗体的窗体设计出问题了。
    如果把public BaseEditTeacehrForm()
            {
                InitializeComponent();            //userStateService = new UserStateService();
            }注释了,就没问题了
      

  2.   

    因为反射是运行时才进行,设计时未运行。http://blog.csdn.net/liyanmingkong/article/details/3274976http://hi.baidu.com/dan_dan_dan/blog/item/b64075eda94b63ddb21cb153.html
      

  3.   

    语法没问题,当然编译通过。Design 和运行是不同的状态
      

  4.   

    应该是 Design 状态不会调用父类的构造函数,这个时候 父类构造函数中创建的对象就为null