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