首页 | 互联网 | IT动态 | 网络设备 | 服务器 | IDC | 安全 | Cisco | Windows | Linux | Java | .Net | Oracle | CIW | 华为 | 专题
IT技术 | 网页设计 | 平面设计 | 电子书下载 | 教学视频 | 方案 | 数字网校 | 直播室 | 虚拟考场 | 面授培训 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室Dotnet频道
热点关键词: 亲密接触ASP.NET · Ajax技术
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> C# >> 文章正文

疑问解惑 使用C#的反射机制时遇到的问题

文章来源转自酷网动力 作者佚名 更新时间2006-9-26 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

  项目DALFactory是采用工厂模式设计的,设计模式的书我也曾看过Java的设计模式,理解也不太深刻,但对工厂模式还是较为熟悉,使用它可以根据需求返回不同的实例对象,在DALFactory项目中使用反射机制来实现依赖注入,当然,它的实现还是没有java中的spring那样灵活,强大,部分代码如下:

  // <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;
  }
  ………………(其它数据层接口)
  }

[1] [2] 下一页  

【责编:Kittoy】

中国IT教育

文章评论
相关产品和培训
 友情推荐链接
 认证培训
 专题推荐

 ·Oracle RMAN物理备份技术详解
 ·JAVA开发利器——JBuilder知多少
 ·Hello,web2.0技术进阶专题
 ·从入门到精通 java初学者实践系列教程
 ·JAVA 与 .NET两强对垒 到底该选什么?
 ·新手必读 认识JAVA涉及的名词
 ·WEB应用集群技术专题
 ·携手未来——Ajax技术专题
 ·Oracle入门基础专题
 ·Spring框架完全进阶专题
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航