为什么有这篇文章
最近在学ASP .会员管理系统项目中使用国际奥委会,选用了一致作为依赖注入的容器组件,在网上找了相关的文章简单实现了依赖注入,但想用文件配置的方式进行容器注入的注册,发现相关的文章实现的方式不适用,因为网上的文章大多是使用Unity 4.0.1的版本,而目前最新的一致版本是5.8.6,使用配置进行容器注入的代码已然不同。
国际奥委会和一致
控制反转,即"控制反转",是一种设计思想。有了国际奥委会后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
一致是微软模式和实践部门开发的一个轻量级的依赖注入容器。
代码准备
新建一个手动音量调节项目,使用默认命名网络应用1 .在模型中新建下面3个类:
公共类用户{ public int Id { get设置;}公共字符串用户名{ get设置;}公共字符串密码{ get设置;}公共字符串电子邮件{ get设置;} }公共接口IUserDao { listuuser GetAllUsers} public class efuserdo : IUserDao { public list user GetAllUsers(){ list user list=new list user();//使用仰角指示器从数据库中读取数据.退货清单;}}HomeController中的索引()中编写代码:
使用网络应用1。模型;公共类HomeController : Controller { public action result Index(){ IUserDao=new efuserdo();定义变量列表=dao .GetAllUsers();//做某事.返回视图();}}以上代码主要实现从数据库中获取用户列表数据到控制器中。
使用一致
在项目引用上右击,管理框架程序包,搜索到一致并安装。
家庭控制器中代码改动
使用网络应用1。模型;使用一致公共类HomeController : Controller { public action result Index(){ IUnityContainer container=new UnityContainer();集装箱RegisterTypeIUserDao,efuserdo();var dao=容器resolveiuserdo();定义变量列表=dao .GetAllUsers();//做某事.返回视图();}}上面代码先声明一个一致的容器,然后注册所需要的对象,最后调用。
按上面的方式,每次使用GetAllUsers()前都需要声明下,这里应该封装下团结。在ASP .会员管理系统中的使用已经将代码封装好了。
ASP .会员管理系统使用一致
使用框架安装团结MVC。
安装完成后会在~/App_Start/目录下自动生成UnityMvcActivator.cs和UnityConfig.cs文件。
打开UnityConfig文件,修改RegisterTypes()方法的代码
公共静态void寄存器类型(Iunitycontainer容器){//注意:要从web .配置加载,请取消对下面一行的注释。//确保添加一个团结.使用语句的配置。//容器加载配置();//TODO:在此注册您的类型映射。集装箱RegisterTypeIUserDao,efuserdo();}注意引用
使用网络应用1。模型;修改家庭控制器代码(使用构造函数注入)
公共类家庭控制器:控制器{ IUserDao _ iUserDao公共家庭控制器(IUserDao IUserDao){这个._ iUserDao=iUserDao}公共行动结果索引(){ var list=_ iUserDao .GetAllUsers();//做某事.返回视图();}}此方式是将依赖注入写在了代码中。然而并不灵活,每添加一组类,都要在UnityConfig中进行注册并编译一遍代码。我们更需要的是在配置文件中注册类型。
使用配置文件
修改UnityConfig文件中RegisterTypes()方法的代码:
公共静态void寄存器类型(Iunitycontainer容器){//注意:要从web .配置加载,请取消对下面一行的注释。//确保添加一个团结.使用语句的配置。集装箱加载配置();//TODO:在此注册您的类型映射。//容器RegisterTypeIUserDao,efuserdo();}需要引用
使用微软。实践。统一。配置;
更改网络。配置的配置:
?可扩展标记语言版本='1.0 '编码='utf-8 '?配置配置节部分名称='团结'类型='微软.实践。统一。配置。统一配置部分,统一配置//配置部分unity容器容器类型类型='WebApplication1 .模型IUserDao,Webapplication 1 ' MapTo=' Webapplication 1 .模型。电子邮件,网络应用1' /类型/容器/容器/统一./配置运行站点,成功获取用户列表数据。
扩展
如果需求更改,要换用ADO .网来操作数据库,只要建一个SQLUserDao的类,继承自IUserDao,然后将配置文件中的注册类型修改即可
类型类型='WebApplication1 .模型IUserDao,Webapplication 1 ' MapTo=' Webapplication 1 .模型。SQLUserDao,Webapplication 1/笔者使用的是VS2017进行操作。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。