千家信息网

IOC 在Mvc中的使用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,IOC,是控制反转(Inversion of Control)的英文简写, 控制反转一般分为两种类型,依赖注入(Dependency Injection)和依赖查找(Dependency Lookup
千家信息网最后更新 2026年10月31日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安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 互联网科技公司起名 互联网科技产业 为想互联网科技怎么样 互联网科技战争 互联网科技的英文 南京欣网互联网科技 致聘互联网科技 哈尔滨秒房互联网科技有限公司 上海电发互联网科技有限公司 博兴的互联网电子科技公司 互联网金融科技公司干啥的 互联网和黑科技的看法 南平创想时代互联网科技有限公司 天津腾达互联网科技有限公司 徐州市互联网科技有限公司 锡山区互联网智能科技产品供应 马化腾互联网科技教学 承德科技产业互联网平台 互联网高科技绘画 互联网是第几次科技革命的成果 齐家互联网科技有限公司 天扬科技互联网广告 晓花互联网科技有限公司网址 互联网数据科技专业 启辰互联网科技 上海万顺科技互联网有限公司招聘 兰石爱特工业互联网科技分公司 东风日产互联网科技公司叫什么 武汉亿视互联网科技有限公司
0