扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
// <summary> /// 抽象工厂模式创建DAL。 /// web.config 需要加入配置:(利用工厂模式+反射机制+缓存机制,实现动态创建不同的数据层对象接口) /// DataCache类在导出代码的文件夹里 /// 可以把所有DAL类的创建放在这个DataAccess类里 /// <appSettings> /// <add key="DAL" value="SmsSystem.SQLServerDAL" /> (这里的命名空间根据实际情况更改为自己项目的命名空间) /// </appSettings> /// </summary> public sealed class DataAccess { private static readonly string path = ConfigurationManager.AppSettings["DAL"]; /// <summary> /// 创建对象或从缓存获取 /// </summary> public static object CreateObject(string path, string CacheKey) { object objType = DataCache.GetCache(CacheKey);//从缓存读取 if (objType == null) { try { //Assembly ass = new Assembly(); objType = Assembly.Load(path).CreateInstance(CacheKey);//反射创建 DataCache.SetCache(CacheKey, objType);// 写入缓存 } catch(System.Exception ex) { string str = ex.Message;// SmsSystem.Utility.SaveLog.SaveInfoToLog(str, "errorLog", "异常"); } } return objType; } /// <summary> /// 不使用缓存,创建对象 /// </summary> private static object CreateObjectNoCache(string path, string CacheKey) { try { object objType = Assembly.Load(path).CreateInstance(CacheKey); return objType; } catch//(System.Exception ex) { //string str=ex.Message;// 记录错误日志 return null; } } /// <summary> /// 创建CustEmployee数据层接口 /// </summary> public static SmsSystem.IDAL.ICustEmployee CreateCustEmployee() { string CacheKey = path + ".CustEmployee"; object objType = CreateObject(path, CacheKey); return (ICustEmployee)objType; } ………………(其它数据层接口) } |
<appSettings> <add key="DAL" value="SmsSystem.SQLServerDAL"/> ………… </appSettings> |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者