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

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

 namespace SplitLowSystem.Repository
{
/// <summary>
/// dcy 工厂类
/// </summary>
public static class RepositoryFactory
{
/// <summary>
/// 根据接口创建对应的实体类
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static T Creatobj<T>() where T : class
{ IUnityContainer current = new UnityContainer();
current.RegisterType<ILawCAT, LawCATDal>();
current.RegisterType<ILawProv, LawProvDal>();
current.RegisterType<IT_Law, T_Law>();
current.RegisterType<IT_Law_Prov, T_Law_Prov>();
current.RegisterType<ICodeHY, CodeHYDal>();
current.RegisterType<IHYCodeCAT, HYCodeCATDal>();
current.RegisterType<IDeptCAT, DeptCATDal>(); return current.Resolve<T>(); }
}
}

在bll中使用方式:

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

  

UnityContainer 实现DI的更多相关文章

  1. EF DI & MVC

    The Repository Pattern with EF Code First & Dependency Injection in ASP.NET MVC3 Ray_Liang, 5 Ju ...

  2. IoC和DI的理解

    1 概述 当我们想闭上眼睛想如何让我们的软件更加可用可维护时,我们总能想到一个词:松耦合.在这篇文章中,主要讲述了模块间存在的依赖关系,但这种依赖关系违背了依赖倒置原则.在这之后,我们将讨论一种解除软 ...

  3. 控制反转(IOC: Inverse Of Control) & 依赖注入(DI: Independence Inject)

    举例:在每天的日常生活中,我们离不开水,电,气.在城市化之前,我们每家每户需要自己去搞定这些东西:自己挖水井取水,自己点煤油灯照明,自己上山砍柴做饭.而城市化之后,人们从这些琐事中解放了出来,城市中出 ...

  4. 控制反转(Ioc)和依赖注入(DI)

    控制反转IOC, 全称 “Inversion of Control”.依赖注入DI, 全称 “Dependency Injection”. 面向的问题:软件开发中,为了降低模块间.类间的耦合度,提倡基 ...

  5. [Solution] DI原理解析及Castle、Unity框架使用

    本节目录 DI介绍 DI基本原理 DI框架 Castle Windsor Unity Autofac Spring.Net DI介绍 控制反转(Inversion of Control,英文缩写为Io ...

  6. C# Ioc、DI、Unity、TDD的一点想法和实践

    面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP). 依赖倒置原则(DIP):一种软件架构设计的原则(抽象概念) 控制反转( ...

  7. Unity容器的简单AOP与DI的应用Demo(基于asp.net mvc框架)

    转发请注明出处:https://home.cnblogs.com/u/zhiyong-ITNote/ 整个Demo是基于Controller-Service-Repository架构设计的,每一层之间 ...

  8. .Net Core使用Unity替换原生DI

    原文:.Net Core使用Unity替换原生DI 一.DIP.IOC.DI 面对对象设计原则可以帮助我们开发出更好的程序,其中有一个依赖倒置原则DIP并由此引申出IOC.DI等概念.就先粗略的了解一 ...

  9. 20181123_控制反转(IOC)和依赖注入(DI)

    一.   控制反转和依赖注入: 控制反转的前提, 是依赖倒置原则, 系统架构时,高层模块不应该依赖于低层模块,二者通过抽象来依赖 (依赖抽象,而不是细节) 如果要想做到控制反转(IOC), 就必须要使 ...

随机推荐

  1. gbd基本使用一

    http://biancheng.dnbcw.info/linux/391846.html

  2. 用pecl/pear独立编译PHP扩展 vs. 把扩展编译到PHP内核中

    将扩展编译到php内部的方式会提高php运行扩展的效率,但是每次需要新添加扩展时都需要把php以及之前添加的所有扩展重新编译一边,非常麻烦. 独立编译扩展,php外部调用扩展的方式虽然会牺牲一点点的性 ...

  3. drupal 7在一个form新增或者修改一个字段

    例如在以下页面新增一个工号字段 在模块文件里面通过hook_form_FORM_ID_alter 函数修改,比如 图中的helloworld是模块名称,也就是你在哪个模块里面写这个函数那么名称就是什么 ...

  4. 一种更清晰的Android架构(转)

    一种更清晰的Android架构   一种更清晰的Android架构 原文链接 : Architecting Android…The clean way? 译者 : Mr.Simple & So ...

  5. JQ入门学习实战演练

    选择器是JQuery一大特色,所有的DOM操作.事件操作.Ajax操作都离不开选择器.熟练掌握JQuery的选择器,可以节省很多代码,很大程序上简化我们的脚本编程工作. JQuery的选择器很类似于样 ...

  6. golang os/exec 执行外部命令

    exec包执行外部命令,它将os.StartProcess进行包装使得它更容易映射到stdin和stdout,并且利用pipe连接i/o. func LookPath(file string) (st ...

  7. Spring基于注解ehCache缓存整合

    注解的使用参照:http://blog.csdn.net/wjacketcn/article/details/50945887 (侵删) ehCache是纯java实现的缓存组件,spring从3.1 ...

  8. Hangfire项目使用

    基本介绍: hangfire 主要用于根据设置时间来执行任务,间隔几分钟执行一次,每天几点钟执行一次,如此执行任务. 方法: backgroundjob.enqueue(()=>"要执 ...

  9. [经验] 新版SkyIAR、Easy Image X在有些PE里不能运行的解决办法

    [经验] 新版SkyIAR.Easy Image X在有些PE里不能运行的解决办法 xxwl2008 发表于 2013-1-26 11:58:38 https://www.itsk.com/threa ...

  10. linux限制ftp账户的访问路径

    1.建用户,命令行状态下,在root用户下: 运行命令:"useradd -d /home/test test" //增加用户test,并制定test用户的主目录为/home/te ...