在MVC 中使用 autofac 实现自动注册
2017-07-31 01:29
344 查看
思路很简单:首先我们去找到所有Dll,再去找到实现了IAutoInject 接口的类,然后使用RegisterAssemblyTypes进行注入。IAutoInject是一个空接口,用来辅助我们寻找需要注册的接口
Install-Package Autofac.Mvc5 -Version 4.0.2
注意: 获取程序集的错误写法(该写法在回收程序池后会导致注册信息丢失): var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToArray();
访问Home/index 即可看到ok成功输出
autofac官网: https://autofac.org/
1. 在控制台执行命令安装AutoFac组件
Install-Package AutofacInstall-Package Autofac.Mvc5 -Version 4.0.2
2. 定义IAutoInject接口
public interface IAutoInject { }
3. 在Application_Start()中初始化
protected void Application_Start() { var builder = new ContainerBuilder(); //获取IAutoInject的Type var baseType = typeof(IAutoInject); //获取所有程序集 var assemblies = System.Web.Compilation.BuildManager.GetReferencedAssemblies().Cast<Assembly>().ToArray(); //自动注册接口 builder.RegisterAssemblyTypes(assemblies).Where(b => b.GetInterfaces(). Any(c => c == baseType && b != baseType)).AsImplementedInterfaces(). InstancePerLifetimeScope(); //自动注册控制器 builder.RegisterControllers(assemblies); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }
注意: 获取程序集的错误写法(该写法在回收程序池后会导致注册信息丢失): var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToArray();
4. 编写测试代码
public interface IStudent: IAutoInject { string Test(); }
public class Student : IStudent { public string Test() { return "ok"; } }
public class HomeController : Controller { private IStudent _student; public HomeController(IStudent student) { _student = student; } public ActionResult Index() { return Content(_student.Test()); } }
访问Home/index 即可看到ok成功输出
autofac官网: https://autofac.org/
相关文章推荐
- 有关使用MVC+EF实现注册查询功能
- 使用VB实现邮箱自动注册(二):修改代理服务器
- MVC3使用Unity实现接口自动注册
- ASP.NET MVC 5 使用autofac实现DI
- AAAMybatis使用MapperScannerConfigurer实现自动注册dao到spring容器
- 使用Docker搭建consul集群+registrator实现服务自动注册。
- [Solution] 使用Autofac在MVC、Web API、WCF中实现IOC
- ASP.NET MVC中Autofac实现的自动注入模式
- 使用MVC实现用户登录注册系统—银行管理系统
- Asp.Net MVC 之 Autofac 初步使用2 集成mvc 属性注入以及自动注入
- 使用VB实现邮箱自动注册(一):表单自动提交
- [原创]Aop之使用Autofac+Castle 自动注入服务且动态代理服务实现拦截(非MVC控制器拦截)
- 使用springmvc+mybatis实现增删改查并进行登录注册功能
- Asp.Net MVC 之 Autofac 初步使用2 集成mvc 属性注入以及自动注入
- 使用js实现注册表单时自动检测输入信息
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- Asp.mvc(三) ~ 使用 Autofac 实现依赖注入
- Asp.Net Mvc使用Autofac实现依赖注入
- 使用Docker搭建consul集群+registrator实现服务自动注册。
- MVC3使用Unity实现依赖注入接口与于实现类自动注册