C# MVC IOC、依赖注入
2021-07-11 05:06
标签:sse c中 sea col actor .net color 使用 public 在MVC5中依赖注入,本文介绍通过扫描类型RegisterAssemblyTypes来进行注册 另外还有扫描模块RegisterAssemblyModules来注册 使用Autofac框架进行组件的依赖注入 Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个 先通过Nuget安装程序包 PM> install-package atuofac PM> install-package atuofac.mvc5 一般的做法是设计一个空的IDependency的接口,让所有想要加入到IOC中的类实现这个接口 在Global中进行设置 添加引用 using Autofac; NormalService的使用 如果NormalService是实现接口INormalService的话 除了通过统一实现IDependency的方式来进行注册外,单个类型的注册 builder.RegisterType 这些就是在MVC中进行依赖注入的方式 C# MVC IOC、依赖注入 标签:sse c中 sea col actor .net color 使用 public 原文地址:https://www.cnblogs.com/pashanhu/p/9656840.html interface IDependency
{
}
public class NormalService:IDependency
{
public string testIoc()
{
return "IoC Test";
}
}
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())); public NormalService normalService { get; set; }
[HttpGet]
public JsonResult GetIocMethod()
{
string strIocReturn= normalService.testIoc();
return Json(strIocReturn,JsonRequestBehavior.AllowGet);
}
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);
}
builder.RegisterType
.AsSelf().AsImplementedInterfaces()
.InstancePerLifetimeScope().PropertiesAutowired();