工厂模式Assembly.Load(path).CreateInstance 反射出错解决办法
项目结构:
DALFactory 反射代码反射
//使用缓存 private static object CreateObject(string AssemblyPath,string classNamespace) { object objType = DataCache.GetCache(classNamespace); if (objType == null) { try { Assembly assm = Assembly.Load(AssemblyPath);//第一步:通过程序集名称加载程序集 objType = assm.CreateInstance(classNamespace);// 第二步:通过命名空间+类名创建类的实例。 DataCache.SetCache(classNamespace, objType);// 写入缓存 } catch//(System.Exception ex) { //LogOperate.WriteErrorLog("创建反射异常(不使用缓存)", ex); //string str=ex.Message;// 记录错误日志 } } return objType; }
当程序运行时到Assembly assm = Assembly.Load(AssemblyPath); assm值为空则会报错
错误原因一:
配置文件中的Key的Value必须跟,SQLServerDAL中的程序集名称一致。
右键SQLServerDAL,属性,可查看程序集名称
错误原因二:
站点没有引用SQLServerDAL,添加引用即可