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>();
    

      

           

         

  • 相关阅读:
    mybatis Result Maps collection already contains value for com.ebways.dictionary.dao.impl.PtInfoDaoImpl.beanMap
    spring mvc 重定向加传参
    http apr 8080 exec 3解决
    jsp调用java方法 function taglib
    java读取xml文件
    jsp自定义标签(时间格式化包括Long转时间)
    JAVA-JSP内置对象之request获得所有的参数名称
    JAVA-JSP内置对象之request对象参数
    JAVA-JSP内置对象之移除属性
    JAVA-JSP内置对象之application范围
  • 原文地址:https://www.cnblogs.com/duchyaiai/p/5740810.html
Copyright © 2011-2022 走看看