14抽象工厂获取数据访问层的实例,缓存的使用和反射的使用
Posted 蔡老菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14抽象工厂获取数据访问层的实例,缓存的使用和反射的使用相关的知识,希望对你有一定的参考价值。
工厂类的代码:
namespace Shop.DALFactory { /// <summary> /// 抽象工厂。完成数据层中对象的创建(反射对象) /// </summary> public class AbstractFactory { //获取程序集的名称 private static string DalAssemblyPath = ConfigurationManager.AppSettings["DalAssemblyPath"]; //获取程序集的命名空间 private static string NameSpace = ConfigurationManager.AppSettings["NameSpace"]; /// <summary> /// 通过抽象工厂创建的一个数据访问层的类的实例 /// </summary> /// <returns></returns> public static IDAL.ICustomerDAL CreateCustomerDAL() { //获取程序集下具体要创建的类的名称 string fullClassName = NameSpace + ".CustomerDAL"; return CreateInstance(fullClassName, DalAssemblyPath) as IDAL.ICustomerDAL; } /// <summary> /// 通过反射的方法反射一个类的实例 /// </summary> /// <param name="fullClassName">具体命名空间空间下的类</param> /// <param name="dalAssemblyPath">命名空间</param> /// <returns>实例的object对象</returns> private static object CreateInstance(string fullClassName, string dalAssemblyPath) { //先从系统的缓存中获取实例对象 object instance= Shop.Commom.CacheHelper.GetCache(fullClassName); if (instance == null) { //如果系统中未找到缓存对象,就通过反射的方法获取实例的对象 Assembly ass = Assembly.Load(dalAssemblyPath); instance = ass.CreateInstance(fullClassName); //并将实例对象写入键(名称为命名空间加类型名)的值 Shop.Commom.CacheHelper.InsertCahch(fullClassName, instance); } return instance; } } }
缓存类的代码:
namespace Shop.Commom { public class CacheHelper { /// <summary> /// 根据键从缓存中取出值 /// </summary> /// <param name="key">键</param> /// <returns></returns> public static object GetCache(string key) { //从系统中获取缓存的对象 System.Web.Caching.Cache cache = HttpRuntime.Cache; return cache.Get(key); } /// <summary> /// 设置缓存数据 /// </summary> /// <param name="key"></param> /// <param name="value"></param> public static void InsertCahch(string key,object value) { System.Web.Caching.Cache cache = HttpRuntime.Cache; cache.Insert(key, value); } } }
以上是关于14抽象工厂获取数据访问层的实例,缓存的使用和反射的使用的主要内容,如果未能解决你的问题,请参考以下文章