AutoFac与ASP.NET MVC结合使用
2024-10-01 11:43:44
- MVC下的配置
- 通过NuGet安装AutoFac插件:Install-Package Autofac.Mvc5
- 在Global中调用:
var builder= new ContainerBuilder();
//注册当前程序集中的所有controller;加上PropertiesAutowired()后,再可以使用属性注入
builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
Assembly asmService= Assembly.Load("TestService");
//在bulider中获取不是抽象类的相关程序集;这块添加PropertiesAutowired()可以让接口调用其他接口,
//实现接口间属性注入
builder.RegisterAssemblyTypes(asmService)
.Where(t => !t.IsAbstract).AsImplementedInterfaces().PropertiesAutowired();
var container=builder.Build();
//注册在DepandencyResolver中
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
- MVC下的使用
为自定义ModelBinder注入,还可以使用builder.RegisterModelBinders()等。
在Controller中只要声明Service的属性即可,AutoFac会自动完成属性注入
public class DefaultController : Controller
{
public ZSZ.Common.IUserService userService { get; set; }
// GET: Default
public ActionResult Index()
{
return View();
}
}并且在ActionFilter中也可以这样使用属性注入
只有AutoFac创建的对象才有可能进行自动属性的赋值;但是在没有注入的地方,如果想获取对象,可以这样:
ICityService cityService =DependencyResolver.Current.GetService<ICityService>()
4. 如果在quartz等单独的线程中,无法通过DependencyResolver.Current.GetService<ICityService>()获取,可以使用
var container = AutofacDependencyResolver.Current.ApplicationContainer;
using (container.BeginLifetimeScope())
{
cityService = container.Resolve<ICityService>();
}
最新文章
- vsftp简单学习思考
- Struts2 Result 类型和对应的用法详解
- VS2010 AppCode文件夹问题
- HDU1075
- MongoDB学习笔记-01 简介、安装
- 使用动态类型dynamic让你的省了很多临时类
- Codeforces Round #313 (Div. 2) D. Equivalent Strings
- sql server系统表详细说明
- 经典线程同步 事件Event
- VBA Excel 常用 自定义函数
- Z-Stack ZMain学习
- nginx如何解决超长请求串
- 用到的Python运算符
- 2015 Multi-University Training Contest 6
- Spring自学教程-声明式事务处理(六)
- 从一个针对ASP.NET MVC框架的Controller.Action的请求处理顺序来说整个请求过程。
- u盘分区装机版
- 06-Python入门学习-元组、字典、集合类型
- 【C++学习笔记】变量初始化规则
- (php)实现万年历