zoukankan      html  css  js  c++  java
  • UnityContainer 实现DI

         DI(依赖注入) 的方式有很多种: 接口注入,属性注入,构造注入等。DI主要是为了实现代码的松耦合,方便代码的维护和扩展。(其实都是扯淡)。

         来说说我为啥要使用DI吧。公司有个项目,需要我一个人完成(包括前端,后台),时间要求的特别紧凑。而且项目后期维护变动会很大。根据实际情况我对项目的设计如下:

    1.   项目使用mvc + ado.net (也就是数据库访问使用 ado .net 为啥不使用 EF等框架呢 是因为数据库访问速度的原因,虽然说EF的本质还是ado.net 但是控制起来总是感觉没有ado.net 好)。
    2.   项目使用工厂模式。(实在是懒得记接口和实体类的对应,对于大一点的项目来说 你也记不住)。
    3.   项目的层级为 Dal 数据库访问层  IDal 数据库访问接口层  Model 实体类型及其mvc中的视图所需model(对于我自己来说,我觉得视图所需的model放在这里是最恰当的)  BLL 操作层。

         好了,到这里后就剩下一个了 处理工厂的实现。需要引用下面的dll

             

          代码如下:(使用的是接口注入)

           

     1 namespace SplitLowSystem.Repository
     2 {
     3     /// <summary>
     4     ///  dcy 工厂类
     5     /// </summary>
     6     public static class RepositoryFactory
     7     {
     8         /// <summary>
     9         ///   根据接口创建对应的实体类
    10         /// </summary>
    11         /// <typeparam name="T"></typeparam>
    12         /// <returns></returns>
    13         public static T Creatobj<T>() where T : class
    14         {
    15 
    16             IUnityContainer current = new UnityContainer();
    17             current.RegisterType<ILawCAT, LawCATDal>();
    18             current.RegisterType<ILawProv, LawProvDal>();
    19             current.RegisterType<IT_Law, T_Law>();
    20             current.RegisterType<IT_Law_Prov, T_Law_Prov>();
    21             current.RegisterType<ICodeHY, CodeHYDal>();
    22             current.RegisterType<IHYCodeCAT, HYCodeCATDal>();
    23             current.RegisterType<IDeptCAT, DeptCATDal>();
    24 
    25             return current.Resolve<T>();
    26 
    27         }
    28     }
    29 }
    View Code

        在bll中使用方式:

          

                var bll = Repository.RepositoryFactory.Creatobj<IDAL.IT_Law_Prov>();
    

      

           

         

  • 相关阅读:
    oracle数据库同步
    软件设计过程中常用的几种图(一)
    面向对象建模为基础的开发模式
    常用正则表达式
    js 创建一个浮动div
    DATALIST 绑定数据分页
    ASP.NET 3.5 Extensions CTP Preview Released
    重构是一种意识流
    重构随笔: 封装集合(Encapsulate Collection)
    乱笔.................table控件,带一列合并
  • 原文地址:https://www.cnblogs.com/duchyaiai/p/5740810.html
Copyright © 2011-2022 走看看