UnityContainer 实现DI

news/2024/7/5 20:01:18

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

  

       

 

     

转载于:https://www.cnblogs.com/duchyaiai/p/5740810.html


http://www.niftyadmin.cn/n/1942741.html

相关文章

LR11基础常用函数

为什么80%的码农都做不了架构师&#xff1f;>>> loadrunner11支持C语言脚本&#xff0c;不过有些函数HP重写了相关函数。现记录&#xff0c;以备不时之需&#xff0c;如下&#xff1a; 打印输出字符&#xff1a;lr_output_message();譬如打印一个参数化的值&#x…

服务器显示PGO是什么意思,PGO是什么意思

1. The ascending cholinergic PGO (ponto-geniculo-occipital) waves stimulate higher midbrain and forebrain cortical structures.碱性的PGO物质的数量的上升刺激较高位置的中脑核心结构。2. The results show that there are three stages in the process of pyrolysis o…

hashmap containsvalue时间复杂度_面试官都喜欢问的HashMap!

作者&#xff1a;dreamcatcher-cx&#xff0c; 出处&#xff1a;http://www.cnblogs.com/chengxiao/转载自公众号&#xff1a;程序员大厂面试HashMap可以说是Java面试中必问的一个问题&#xff0c;也是考察基础是否扎实的一个面试题&#xff0c;本文就带大家一起探索和分析Hash…

杂技

为什么code review 敏捷开发 devops http://os.51cto.com/art/201404/436798.htm http://os.51cto.com/art/201404/436824.htm https://sdarchitect.wordpress.com/2013/10/16/understanding-devops-part-6-continuous-deployment/ http://www.tuicool.com/articles/riymMb6 r…

CodeForces 414B Mashmokh and ACM

->题目链接 定义一个数组dp&#xff0c;dp[ i ][ j ]表示以数值 i 结尾的、长度为 j 的good序列。 容易知道dp[ i ][1](1≤i≤n) 为1。 每求得一个 i&#xff0c;j 对应的dp[ i ][ j ]&#xff0c;就把这个值加在 dp[ p*i ][ j1 ]&#xff0c;dp[ p*i ][ j2 ]&#xff0c;……

Masonry整理

Masonry整理Masonry是以AutoLayout为基础的轻量级布局框架更加简化了整个约束系统Masonry三方下载本文参考&#xff1a; 地址1 地址2 地址3 地址4*Masonry有哪些属性property (nonatomic, strong, readonly) MASConstraint left;property (nonatomic, strong, read…

HBase 查找版本

直接使用hbase shell命令进入shell时间会告诉版本&#xff1a;进shell后。关键在version命令。能够查看版本&#xff1a;# hbase shell HBase Shell; enter help<RETURN> for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell…

戴尔r410服务器raid装系统,Dell R410 Raid磁盘阵列驱动

软件简介 Soft Introductiondell r410服务器的磁盘阵列在windows系统下的驱动程序&#xff0c;能够直接加载。支持32-64位Windows Server 2008操作系统支持下面硬件ID&#xff1a;PCI\VEN_1028&DEV_0016&subsys_1F241028PCI\VEN_8086&DEV_3A25&subsys_020F1028…