千家信息网

IOC 在Mvc中的使用

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,IOC,是控制反转(Inversion of Control)的英文简写, 控制反转一般分为两种类型,依赖注入(Dependency Injection)和依赖查找(Dependency Lookup
千家信息网最后更新 2025年12月03日IOC 在Mvc中的使用

IOC,是控制反转(Inversion of Control)的英文简写, 控制反转一般分为两种类型,依赖注入(Dependency Injection)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。本文就简单说说IOC在MVC中 的依赖注入的使用方法。

我新建了一个mvc 项目在 HomeController 中这样写:

1         public DataService dataService { get; set; }2 3         public HomeController(DataService dataService)4         {5             this.dataService = dataService;6         }

其中 DataService类是我写的一个提供数据的类:

 1  public class DataService 2     { 3         private IRepository repos { get; set; } 4  5         public DataService(IRepository repo) 6         { 7             repos = repo; 8         } 9 10         public IEnumerable GetData()11         {12             return repos.GetData();13         }14 15     }

1   public interface IRepository2     {3         IEnumerable GetData();4     }

 1    public class DataRepository : IRepository 2     { 3  4         public DataRepository() 5         { 6  7         } 8  9         public IEnumerable GetData()10         {11             List list = new List();12             list.Add("test1");13             list.Add("test2");14             list.Add("test3");15             list.Add("test4");16             list.Add("test5");17             list.Add("test6");18             return list;19         }20     }

然后运行项目,页面会出现这样一个结果:

报的错是接口没有注册,导致构造的时候出错。怎么解决呢?IOC可以完美解决。

首先添加相关的类库,右键 manager Nuget packages 搜索unity

添加以下两个,之后会发现项目新加了一些东西:

然后我们就可以做IOC 依赖注入了,

在UnityConfig.cs中的 RegisterTypes方法中添加 一句

1 Container.RegisterType();

其中IRepository 是我们要注入的构造函数中参数的接口,而 DataRepository是这个接口的具体实现。

或者我这样写:

1        container.RegisterType(2                 new InjectionConstructor(3                 new ResolvedParameter()4                 ));

都是可以的。

这样 我们就能正确的运行这个项目,

Action中的代码:

1   public ActionResult Index()2         {3             IEnumerable list = dataService.GetData();4             return View(list);5         }

View中:

 1 @model IEnumerable 2 @{ 3     ViewBag.Title = "Home Page"; 4 } 5  6  7 
8
    9 @foreach (var item in Model)10 {11
  • @item
  • 12 }13
14

显示的效果:


项目 接口 方法 控制 运行 东西 两个 代码 使用方法 函数 参数 效果 数据 时候 简写 类型 结果 页面 英文 应用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 gmod僵尸感染服务器 运维工程师数据库同步 明日之后秋日森林服务器有多少人 软件开发属于前端还是后端输出物 描述数据库全体数据全局逻辑结构 奔奔上货怎么清空数据库 数据库插值 计算机网络技术要多少分 做软件开发技术路线 重庆移动城管软件开发电话 阳光网络技术有限公司 橙服务器 u8单位日记账是哪个数据库表 ar眼镜软件开发 城关区网络技术有限公司 镇江浪潮服务器咨询客服 网络安全培训基地是什么 通过电脑找不到服务器 学软件开发的教材 声誉好的新药数据库 山东综合软件开发直销价格 农行软件开发中心哪个好 如何设置sql数据库的登陆密码 洛阳市公安局网络安全 关乎网络技术上海有限公司 文献检索的数据库比较 数据库系统需要哪些特点 企业服务器网站靠什么来访问的 吃鸡服务器连接超时8.1.6 软件开发质量保证和质量控制
0