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中的注入方式