UnityContainer 实现DI
DI(依赖注入) 的方式有很多种: 接口注入,属性注入,构造注入等。DI主要是为了实现代码的松耦合,方便代码的维护和扩展。(其实都是扯淡)。
来说说我为啥要使用DI吧。公司有个项目,需要我一个人完成(包括前端,后台),时间要求的特别紧凑。而且项目后期维护变动会很大。根据实际情况我对项目的设计如下:
- 项目使用mvc + ado.net (也就是数据库访问使用 ado .net 为啥不使用 EF等框架呢 是因为数据库访问速度的原因,虽然说EF的本质还是ado.net 但是控制起来总是感觉没有ado.net 好)。
- 项目使用工厂模式。(实在是懒得记接口和实体类的对应,对于大一点的项目来说 你也记不住)。
- 项目的层级为 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的更多相关文章
- EF DI & MVC
The Repository Pattern with EF Code First & Dependency Injection in ASP.NET MVC3 Ray_Liang, 5 Ju ...
- IoC和DI的理解
1 概述 当我们想闭上眼睛想如何让我们的软件更加可用可维护时,我们总能想到一个词:松耦合.在这篇文章中,主要讲述了模块间存在的依赖关系,但这种依赖关系违背了依赖倒置原则.在这之后,我们将讨论一种解除软 ...
- 控制反转(IOC: Inverse Of Control) & 依赖注入(DI: Independence Inject)
举例:在每天的日常生活中,我们离不开水,电,气.在城市化之前,我们每家每户需要自己去搞定这些东西:自己挖水井取水,自己点煤油灯照明,自己上山砍柴做饭.而城市化之后,人们从这些琐事中解放了出来,城市中出 ...
- 控制反转(Ioc)和依赖注入(DI)
控制反转IOC, 全称 “Inversion of Control”.依赖注入DI, 全称 “Dependency Injection”. 面向的问题:软件开发中,为了降低模块间.类间的耦合度,提倡基 ...
- [Solution] DI原理解析及Castle、Unity框架使用
本节目录 DI介绍 DI基本原理 DI框架 Castle Windsor Unity Autofac Spring.Net DI介绍 控制反转(Inversion of Control,英文缩写为Io ...
- C# Ioc、DI、Unity、TDD的一点想法和实践
面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP). 依赖倒置原则(DIP):一种软件架构设计的原则(抽象概念) 控制反转( ...
- Unity容器的简单AOP与DI的应用Demo(基于asp.net mvc框架)
转发请注明出处:https://home.cnblogs.com/u/zhiyong-ITNote/ 整个Demo是基于Controller-Service-Repository架构设计的,每一层之间 ...
- .Net Core使用Unity替换原生DI
原文:.Net Core使用Unity替换原生DI 一.DIP.IOC.DI 面对对象设计原则可以帮助我们开发出更好的程序,其中有一个依赖倒置原则DIP并由此引申出IOC.DI等概念.就先粗略的了解一 ...
- 20181123_控制反转(IOC)和依赖注入(DI)
一. 控制反转和依赖注入: 控制反转的前提, 是依赖倒置原则, 系统架构时,高层模块不应该依赖于低层模块,二者通过抽象来依赖 (依赖抽象,而不是细节) 如果要想做到控制反转(IOC), 就必须要使 ...
随机推荐
- 关于node.js杂记
https://gitlore.com/page/gitlore-git/nodejs/index.html[node.js中文文档] ////// https://gitlore.com/in ...
- python http代理代码
googlecode :https://code.google.com/archive/p/python-proxy/source/default/source # -*- coding: cp125 ...
- JS获取Url中传入的参数
一:后台获取,前台调用 后台: object value= Request.QueryString[key]; 前台js: $(function(){ var value="<%=va ...
- JQuery_处理元素和浏览器的窗口的尺寸
一.jQuery width() 和 height() 方法 width() 方法设置或返回元素的宽度(不包括内边距.边框或外边距). height() 方法设置或返回元素的高度(不包括内边距.边框或 ...
- UITableView使用
@多组数据和多组cell 1根数组内含数组时,只可以开启一组cell,内含多个数组时,可以开启多组cell 2多个数组开启多个cell时,既可以竖向开启,也可以横向里层开启,就好比猜题的模式 @注意点 ...
- PHP 中 define() 和 const 定义常量时的区别
自 PHP 5.3.0 起,有两种方式定义常量,使用 const 关键字或者 define() 函数: 1 2 const FOO = 'BAR'; define('FOO', 'BAR'); 这 ...
- Java学习之Iterator(迭代器)的一般用法 (转)
迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价 ...
- [转载] Jenkins入门总结
转载自http://www.cnblogs.com/itech/archive/2011/11/23/2260009.html 在网上貌似没有找到Jenkins的中文的太多的文档,有的都是关于Huds ...
- js函数前面写上分号的原因
说个之前先说,网站上传一些文件,考虑到性能问题,会用一些压缩软件来压缩代码(grunt,glup,webpack,etc..),这时候就可能出现一个问题.看下面代码 (function a(){... ...
- Leetcode--Merge Two Sorted Lists
static ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *temp = ); ListNode *head = te ...