C# MVC IOC、依赖注入

在MVC5中依赖注入,本文介绍通过扫描类型RegisterAssemblyTypes来进行注册

另外还有扫描模块RegisterAssemblyModules来注册

 使用Autofac框架进行组件的依赖注入

Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个

 

先通过Nuget安装程序包

PM> install-package atuofac

PM> install-package atuofac.mvc5

一般的做法是设计一个空的IDependency的接口,让所有想要加入到IOC中的类实现这个接口

    interface IDependency{}
    public class NormalService:IDependency{public string testIoc(){return "IoC Test";}}

在Global中进行设置

添加引用

using Autofac;
using Autofac.Integration.Mvc;//注册Controller时需要

            //获取已加载到此应用程序域的执行上下文中的程序集。Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies().ToArray();
// Assembly[] assemblies = Directory.GetFiles(AppDomain.CurrentDomain.RelativeSearchPath, "*.dll").Select(Assembly.LoadFrom).ToArray();//var assemblies = Assembly.GetExecutingAssembly();//创建autofac管理注册类的容器实例ContainerBuilder builder = new ContainerBuilder();//注册所有实现了 IDependency 接口的类型Type baseType = typeof(IDependency);builder.RegisterAssemblyTypes(assemblies).Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract).AsSelf().AsImplementedInterfaces().PropertiesAutowired().InstancePerLifetimeScope();// 设置MVC的DependencyResolver注册点 builder.RegisterControllers(assemblies).AsSelf().PropertiesAutowired().InstancePerLifetimeScope();DependencyResolver.SetResolver(new AutofacDependencyResolver(builder.Build()));

 

NormalService的使用

        public NormalService normalService { get; set; }[HttpGet]public JsonResult GetIocMethod(){string strIocReturn= normalService.testIoc();return Json(strIocReturn,JsonRequestBehavior.AllowGet);}

 

如果NormalService是实现接口INormalService的话

    public interface INormalService{string testIoc();}
    public class NormalService:IDependency,INormalService{public string testIoc(){return "IoC Test";}}
        public INormalService normalService { get; set; }[HttpGet]public JsonResult GetIocMethod(){string strIocReturn= normalService.testIoc();return Json(strIocReturn,JsonRequestBehavior.AllowGet);}

 

除了通过统一实现IDependency的方式来进行注册外,单个类型的注册

            builder.RegisterType<NormalService>().As<INormalService>().AsSelf().PropertiesAutowired().InstancePerLifetimeScope();

builder.RegisterType<DbContextScopeFactory>().As<IDbContextScopeFactory>()
.AsSelf().AsImplementedInterfaces()
.InstancePerLifetimeScope().PropertiesAutowired();

 

 

这些就是在MVC中进行依赖注入的方式

 

转载于:https://www.cnblogs.com/pashanhu/p/9656840.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ORB-SLAM2的特征提取算法

ORB-SLAM2跟踪线程对相机输入的每一帧图像进行跟踪处理&#xff0c;如下图所示&#xff0c;主要包括4步&#xff0c;提取ORB特征、从上一帧或者重定位来估计初始位姿、局部地图跟踪和关键帧处理。 以下结合相关理论知识&#xff0c;阅读ORB-SLAM2源代码&#xff0c;从而理解ORB…

在vue中使用SockJS实现webSocket通信

最近接到一个业务需求,需要做一个聊天信息的实时展示的界面,这就需要和服务器端建立webSocket连接,从而实现数据的实时获取和视图的实时刷新.在此将我的实现记录下来,希望可以给有同样需求的人一些帮助.废话少说,下面我就来讲一下我的实现过程: 前提 要进行文章中的代码的测试…

DI / CDI –基础

简介&#xff08;DI / CDI基础&#xff09; 首先&#xff0c;我认为对此会有一些困惑&#xff0c;但事实是&#xff0c;它们是相同的–不同之处在于用法及其用途。 DI&#xff08;依赖注入&#xff09;是通用术语–该功能基本上是在任何应用程序上进行Bean发现和Bean连接过程的…

引导界面图标好大_游戏里那些图标和界面,原来是这么设计出来的?

UI设计最硬核的思维 就是功能微信现在在做一种全面连接的功能&#xff0c;而游戏需要实现的是人机互动的功能。实现并完善功能&#xff0c;是互联网、游戏、网站、渴望UI人才的根本原因。如果说有电脑的世界是一片很大的面&#xff0c;那么可视化的操作&#xff0c;都是UI设计师…

爬格子呀9.17(图论)

刘汝佳的紫书差不多就告一段落吧&#xff0c;我觉得可以了&#xff0c;怎么说呢&#xff0c;这书也陪着自己走了一年多了吧&#xff0c;也目睹了从一个啥也不会的萌新到一个稍微会一点的萌新的转变。 差不多开始下本书吧&#xff0c;自己也大三了&#xff0c;时间真的有点紧啊w…

一个vue加egg.js的博客

之前自己的博客是用hexo做的&#xff0c;后面想做一个有后台的博客就打算用vue加node来试试&#xff0c;于是就有了这个博客。 项目地址 W-Blog W-Blog是一个基于vue和node的小小小博客 前端用vue&#xff0c;后端用egg.js 快速入门 技术栈 前端&#xff1a; 用户端&#…

js判断处理undefined类型的数据

code: resFlag response.result.data.result; /查询客户为白名单用户时,将"*该企业已被列入黑名单"标记清除 if(typeof resFlag "undefined"){$("#companynameisblack").text(""); }转载于:https://www.cnblogs.com/YLQBL/p/8819696…

批处理写入以及动态与参数化SQL,数据库的性能如何?

批处理写入是最有效的数据库优化之一。 批处理写入受大多数现代数据库和JDBC标准的一部分支持&#xff0c;并且受大多数JPA提供程序支持。 普通数据库访问包括在单独的数据库/网络访问中将每个DML&#xff08;插入&#xff0c;更新&#xff0c;删除&#xff09;语句发送到数据…

android音量图标不见了,电脑声音图标不见了如何解决?

最近有电脑用户反映&#xff0c;看视频时觉得声音太小了&#xff0c;要调大点声&#xff0c;却发现任务栏上的声音图标不见了&#xff0c;想调个声音都难。那么&#xff0c;电脑声音图标不见了如何解决呢?我们一起往下看看。方法步骤一、XP系统下找回任务栏上的声音图标1、重启…

认识iOS系统架构

关于本文&#xff1a; 文章主要介绍iOS系统架构中的四层结构的内容、常用的框架、大致的功能&#xff0c;然后对iOS开发人员的发展提出自己的一些拙见。 一、iOS系统是基于UNIX系统&#xff0c;所有从系统稳定性上来说的确比其他操作系统的产品要好。 iOS在系统架构上分为4层&a…

r语言赋值为na_r语言将空白格替换成NA

有数据集类似user_id qid1371 000013046dc0ab29ef8773eb61aba623 02 0000cfcadfa43ef824669405081165b13 0006ee1acc5321260ba0fbff1fb8f6494 00083f7b8c6170a3fc976d7b99245259 …

Java泛型教程–示例类,接口,方法,通配符等

泛型是Java编程的核心功能之一&#xff0c;它是Java 5中引入的。如果您使用的是Java Collections &#xff0c;并且版本5或更高版本&#xff0c;则可以肯定使用了它。 在集合类中使用泛型非常容易&#xff0c;但是它提供了比仅创建集合类型更多的功能&#xff0c;我们将在本文中…

html5中音乐播放器怎么写,打造属于自己的音乐播放器 HTML5之audio标签

我的音乐播放器HTML5中增加了Audio和Video标签&#xff0c;这两个标签的用法非常相似。功能却是相当强大&#xff0c;我们先来看一下Audio标签各个浏览器的支持情况。这里用的依然是Can I Use这个在线网站&#xff0c;相信学习前端的同学应该都不陌生。Can I Use我们可以看到&a…

初识react(四) react中异步解决方案之 redux-saga

回顾 初识react(一) 揭开jsx语法和虚拟DOM面纱初识react(二) 实现一个简版的html redux.js的demo初识react(三)在 react中使用redux来实现简版计数器初识react(四) react中异步解决方案之 redux-saga初识react(五) 数据流终极解决方案 dva(零配置) 今天demo是实现一个异步的计…

C# WinFrom 关于MDI

dev是一个牛B 到没边的控件 我们正常用winform做个原始mdi窗体 一点都不好看 但 用的dev只需要一个控件 就可让显示舒服多了 建一个项目 上边放一个 xtraTabbedMdiManager1 一个button1 button1.click如下&#xff1a; Form frm new Form(); frm.MdiParent this; frm.Text &…

Jfinal 文件上传

JFinal上传文件 uploadify 可以在http://www.uploadify.com/ 下载。 在原项目的基础上。 uploadify使用&#xff1a; <input id"file_upload_1" name"file_upload" type"file" multiple"true"> /** param uploader 文件上传方法…

轻量级的开源集成:Apache Camel还是Spring集成?

首先&#xff0c;为全面披露信息&#xff0c;在过去的1.5年中&#xff0c; 我一直担任 FuseSource&#xff08;现为Red Hat&#xff09; 的顾问&#xff0c;为零售&#xff0c;运输&#xff0c;银行/金融等不同行业的大型和小型公司提供SOA和集成项目支持。我的专长是使用该领域…

blue html中转换,Vue/Vue中Html和Markdown互相转换/README.md · bluemoon/LearningNotes - Gitee.com...

# Vue中Html和Markdown互相转换## 前言最近想实现的一个功能&#xff0c;就是将系统中的博客进行导出成Markdown格式&#xff0c;后面经过了调研发现有两种方法能够满足需求&#xff0c;一个是Java后台中将HTML转换成Markdown&#xff0c; 然后导出。第二种方式是在客户端将Htm…

WePY:在质疑中前进 | 文末福利

WePY 作者介绍 Q: 先介绍一下自己吧~ Gcaufy: 我 2011 年大学毕业之后&#xff0c;阴错阳差的走上了 Web 开发的道路。15 年之前算是自由职业 SOHO 工作&#xff0c;主要给一些国外的大公司做外包系统&#xff0c;更多的是做后端开发。15 年之后以前端工程师的身份加入腾讯&a…

表单必填标星_怎么用JS做form表单验证,要详细代码,求救!(带星号的是必填项)...

匿名用户1级2014-06-17 回答举个例子吧&#xff1a;<input type”text” id”telephone” ><input type“button” οnclick“functioncheck1”value“检测”>如果要检测它是否符合标准&#xff0c;那我就会在页面中导入js包然后写一个<script> f…