我的实体类采用了抽象工厂模式创建DAL,利用工厂模式+反射,实现动态创建不同的数据层对象接口,在app.config里有<appSettings>
<add key="DAL" value="MY.SQLServerDAL"></add>
</appSettings>,通过Common.ConfigHelper.GetConfigString("DAL")获得配置信息,
直接在form里使用一切正常;
现在我在一个控件里使用了实体类,代码如下
bll.user blluser=new bll.user();
当我把这个控件拖到form上时报错,Common.ConfigHelper.GetConfigString("DAL")未将对象设置到对象的实例,但是用代码将控件加入form则一切正常,GetConfigString代码如下
public static string GetConfigString(string key)
{        
            return  System.Configuration.ConfigurationManager.AppSettings[key].ToString();
}
请问怎么才能让控件拖到form上时不报错啊

解决方案 »

  1.   

    用到了反射,那控件就是运行时才知道情况,拖到form上那是设计期,出错也正常
      

  2.   

    但是在form中使用不也是设计期么,而且代码好像还没到用反射的时候啊,在读配置文件时就出错了啊
      

  3.   

    return  System.Configuration.ConfigurationManager.AppSettings[key].ToString();这个只要运行时才会知道值,也就是key只要是个字符串,顺便你写什么,它编译都不出错.可以把用到这个的地方换成一个属性,在你调用控件的地方再赋值,这样读配置文件的工作就在外面做.控件拖上去也不会出错.
    public string str
    {
    set{}
    get{}
    }controlinstance.str = ....;