在MVC 中使用 autofac 实现自动注册
来源:互联网 发布:裴乐品牌知乎 编辑:程序博客网 时间:2024/06/03 22:58
思路很简单:首先我们去找到所有Dll,再去找到实现了IAutoInject 接口的类,然后使用RegisterAssemblyTypes进行注入。IAutoInject是一个空接口,用来辅助我们寻找需要注册的接口
1. 在控制台执行命令安装AutoFac组件
Install-Package Autofac
Install-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/
阅读全文
1 0
- 在MVC 中使用 autofac 实现自动注册
- Autofac在ASP.NET MVC中的使用
- 使用Autofac实现MVC、WebApi的注入
- Asp.mvc(三) ~ 使用 Autofac 实现依赖注入
- Asp.Net MVC 之 Autofac 初步使用2 集成mvc 属性注入以及自动注入
- Asp.Net MVC 之 Autofac 初步使用2 集成mvc 属性注入以及自动注入
- Ioc容器Autofac asp.net mvc中整合autofac
- 在ASP.NET MVC中使用WebApi注册路由注意事项
- 在Zf2中实现Controller按照URL自动注册
- 【.Net码农】【Autofac】Ioc容器Autofac系列(2)-- asp.net mvc中整合autofac
- Spring MVC中使用@Autowired实现自动注入
- 使用Autofac在ASP.NET Web API上实现依赖注入
- C#使用AutoFac实现IOC依赖注入
- .NET 使用Autofac实现依赖注入
- NopCommerce使用Autofac实现依赖注入
- Asp.net MVC 使用Autofac的简单使用 IOC
- Ioc容器Autofac系列(2)-- asp.net mvc中整合autofac
- 在asp.net mvc4控制器中使用Autofac来解析依赖
- [PAT乙级]1022. D进制的A+B (20)
- (Codeforces Round #426 (Div. 2)) C.The Meaningless Game
- Codeforces Round #426 (Div. 2) B. The Festive Evening(思维)
- java操作Redis(哨兵或单机模式)
- Linux下Nginx的安装
- 在MVC 中使用 autofac 实现自动注册
- Luogu P2196 [NOIP1996]挖地雷
- 在Windows安装zip格式的mysql
- Firemonkey Session end错误
- java操作redis集群(基本操作)
- 深究js(七)——循环语句(语句Ⅱ)
- 深究js(八)——跳转语句(语句Ⅲ)
- ITIL 2011 服务管理与认证读书笔记——第四章 服务设计
- 深究js(九)——语句的其他类型(语句Ⅳ)