当前位置: 代码迷 >> 综合 >> AutoFac MVC结合
  详细解决方案

AutoFac MVC结合

热度:74   发布时间:2024-01-11 21:55:23.0

AutoFac在MVC中有特定的插件,可以简化MVC程序的开发。

安装使用nuget命令为 Install-Package Autofac.Mvc5 

在Global中需增加配置方法

1.这一步是必须的了获取IOC容器实例

			//Autofac注册//创建autofac管理注册类的容器实例var builder = new ContainerBuilder(

2把当前执行代码的所有程序集注册

//对当前代码程序集的控制器进行注册
builder.RegisterControllers(Assembly.GetExecutingAssembly()).AsImplementedInterfaces().PropertiesAutowired();
//对当前代码相关类库中的程序集进行注册
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).AsImplementedInterfaces().PropertiesAutowired();
//注册所有过滤器
builder.RegisterFilterProvider();//注册所有过滤器

一般可以使用反射的方式把相关类库中的程序集进行注册  定义一IDependency接口,需要通过AutoFac来解析的接口都继承此口,那么我们就可以解析所有此接口相关的方法

//注册所有的M开头的dll
Assembly[] assemblies = Directory.GetFiles(AppDomain.CurrentDomain.RelativeSearchPath, "M*.dll").Select(Assembly.LoadFrom).ToArray();
//注册所有实现了 IDependency 接口的类型
Type baseType = typeof(IDependency);
builder.RegisterAssemblyTypes(assemblies).Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract).AsSelf().AsImplementedInterfaces().PropertiesAutowired().InstancePerLifetimeScope();

var container = builder.Build();

//注册系统级别的 DependencyResolver,这样当 MVC 框架创建 Controller 等对象的时候都是管 Autofac 要对象

DependencyResolver.SetResolver(new AutofacDependencyResolver(container));//下面就是使用MVC的扩展 更改了MVC中的注入方式