C# MVC IOC、依赖注入
在MVC5中依賴注入,本文介紹通過掃描類型RegisterAssemblyTypes來進行注冊
另外還有掃描模塊RegisterAssemblyModules來注冊
?使用Autofac框架進行組件的依賴注入
Autofac是.NET領域最為流行的IOC框架之一,傳說是速度最快的一個
?
先通過Nuget安裝程序包
PM> install-package atuofac
PM> install-package atuofac.mvc5
一般的做法是設計一個空的IDependency的接口,讓所有想要加入到IOC中的類實現(xiàn)這個接口
interface IDependency{} public class NormalService:IDependency{public string testIoc(){return "IoC Test";}}在Global中進行設置
添加引用
using Autofac;
using Autofac.Integration.Mvc;//注冊Controller時需要
// Assembly[] assemblies = Directory.GetFiles(AppDomain.CurrentDomain.RelativeSearchPath, "*.dll").Select(Assembly.LoadFrom).ToArray();//var assemblies = Assembly.GetExecutingAssembly();//創(chuàng)建autofac管理注冊類的容器實例ContainerBuilder builder = new ContainerBuilder();//注冊所有實現(xiàn)了 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是實現(xiàn)接口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);}?
除了通過統(tǒng)一實現(xiàn)IDependency的方式來進行注冊外,單個類型的注冊
builder.RegisterType<NormalService>().As<INormalService>().AsSelf().PropertiesAutowired().InstancePerLifetimeScope(); builder.RegisterType<DbContextScopeFactory>().As<IDbContextScopeFactory>()
.AsSelf().AsImplementedInterfaces()
.InstancePerLifetimeScope().PropertiesAutowired();
?
這些就是在MVC中進行依賴注入的方式
?
轉(zhuǎn)載于:https://www.cnblogs.com/pashanhu/p/9656840.html
總結(jié)
以上是生活随笔為你收集整理的C# MVC IOC、依赖注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC控件编程之组合框跟列表框
- 下一篇: c# TCP高性能通信