最近在学习ASP.NET MVC,使用Unity作为依赖注入容器.分别在WebAPI和MVC中使用.这篇文章介绍WebAPI,MVC的在下篇文章中介绍.下面是学习的一点经验.

一 IOC简单介绍

IoC(Inversion Of Control)即控制反转,其具体就是由容器来控制业务对象之间的依赖关系,而不是像传统方式中由代码来直接控制。控制反转的本质,是控制权由应用代码转到了外部容器,控制权的转移即是所谓的反转。控制权的转移带来的好处就是降低了业务对象之间的依赖程度,即实现了解耦。

IoC的实现策略有两种:

1)依赖查找:容器中的受控对象通过容器的API来查找自己所依赖的资源和协作对象。这种方式虽然降低了对象间的依赖,但是同时也使用到了容器的API,造成了我们无法在容器外使用和测试对象;

2)依赖注入(又称DIDependency Injection):对象只提供普通的方法让容器去决定依赖关系,容器全权负责组建的装配,它会把符合依赖关系的对象通过属性或者是构造函数传递给需要的对象。通过属性注射依赖关系的做法称为设值方法注入,将构造子参数传入的做法称为构造子注入。

依赖注入的好处如下:

查询依赖操作和应用代码分离;

受控对象不会使用到容器的特定的API,这样我们的受控对象可以搬出容器单独使用。

二:WebAPI

1 安装Nuget包

2 安装完成后,会自动生成UnityConfig.cs.修改其中的代码

下面新建BuildUnityContainer方法

创建Unity容器 我用了两种方法

第一种  在代码里直接写Map

第二种 在配置文件中读取Container

MapPath中传的是config文件的位置,示例中是新建了一个ConfigFiles文件夹,并新建配置文件TestUnity.config

配置文件中type中写入命名空间+方法,命名空间(不包含文件夹);

3 配置完成后,在启动程序中添加

4 这样就可以使用依赖注入了

最新文章

  1. Android Weekly Notes Issue #226
  2. win7 32 bit VS2012 OpenCV3.0配置
  3. jQuery设计思想之取值和赋值
  4. 一个背景图实现自定义spinner样式
  5. Java基础(9):Java生成随机数一定范围内的数的一个典型例子
  6. async 和await
  7. 将n行3列的数据dataTable装换成m行7列的dataTable
  8. Android百度地图
  9. SQLServer实现split分割字符串到列
  10. Docker安装Gitlab
  11. iOS基础 - 触摸事件与手势识别
  12. 对比C#中==与equal方法
  13. 如何使用UDP进行跨网段广播(转)
  14. MongoDB系列五(地理空间索引与查询).
  15. jenkins+gitlab配置
  16. HybridStart发布v1.0测试版
  17. Linux下 tftp 服务器的安装与使用
  18. MFC 坦克定位
  19. [MapReduce_add_3] MapReduce 通过分区解决数据倾斜
  20. asp.net loading 动画

热门文章

  1. HTTP面试常见题
  2. 易优CMS:【小白学标签】之empty的基础用法
  3. cmdb全总结
  4. django3-路由系统进阶
  5. 1-4-JS基础-条件判断
  6. 仅用StoryBoard布局实现按钮的均匀分布
  7. [20190515]热备份模式与rman冲突.txt
  8. Python—运算符的类型
  9. OSI网络模型和网络连接设备
  10. [Go] gocron源码阅读-判断是否使用root用户执行