Autofac构建
1.初始化
using System.Reflection;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System;
using System.IO;
using Autofac;
using Autofac.Core;
using Autofac.Integration.Mvc; public static IContainer RegisterIOC()
{
ContainerBuilder builder = new ContainerBuilder();
//构造函数注入
builder.RegisterAssemblyTypes(Assembly.GetCallingAssembly()).AsImplementedInterfaces();
//注入控制器并实现属性注入
builder.RegisterControllers(Assembly.GetCallingAssembly()).PropertiesAutowired();
//支持过滤器的属性注入
builder.RegisterFilterProvider(); builder.RegisterType<AccountService>().As<IAccountService>(); var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); return container;
}
2.在global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles); Func<ILifetimeScope, ILifetimeScope> scopeProvider = (ILifetimeScope container) =>
{
if (HttpContext.Current.Items[typeof(ILifetimeScope)] == null)
{
HttpContext.Current.Items[typeof(ILifetimeScope)] = container.BeginLifetimeScope("AutofacWebRequest");
} return (ILifetimeScope)HttpContext.Current.Items[typeof(ILifetimeScope)];
}; scopeProvider (RegisterIOC())
}
3.手工获取
public class BeanFactory
{
/// <summary>
/// 获取Bean
/// </summary>
/// <typeparam name="T">获取的实例类型</typeparam>
/// <returns>获取的实例</returns>
public static T GetBean<T>()
{
try
{
if (System.Web.HttpContext.Current != null)
{
ILifetimeScope scope = System.Web.HttpContext.Current.Items[typeof(ILifetimeScope)] as ILifetimeScope;
if (scope != null)
{
return scope.Resolve<T>();
}
}
}
catch
{
} return ServiceLocator.Current.GetInstance<T>();
} /// <summary>
/// 获取Bean
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static object GetBean(System.Type type)
{
try
{
if (System.Web.HttpContext.Current != null)
{
ILifetimeScope scope = System.Web.HttpContext.Current.Items[typeof(ILifetimeScope)] as ILifetimeScope;
if (scope != null)
{
return scope.Resolve(type);
}
}
}
catch
{
} return ServiceLocator.Current.GetInstance (type) ;
}
}
4.参考 http://www.360doc.com/content/14/0620/09/10504424_388250715.shtml
Autofac构建的更多相关文章
- C#开发微信门户及应用(48) - 在微信框架中整合CacheManager 缓存框架
在我们的很多框架或者项目应用中,缓存在一定程度上可以提高程序的响应速度,以及减轻服务器的承载压力,因此在一些地方我们都考虑引入缓存模块,这篇随笔介绍使用开源缓存框架CacheManager来实现数据的 ...
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
List多个字段标识过滤 class Program{ public static void Main(string[] args) { List<T> list = new List& ...
- Autofac 依赖注入
介绍 Autofac是一款IOC框架,很轻量级性能非常高,自动注入很给力. NuGet Autofac:Autofac控制反转容器核心 Autofac.MVC5:提供IDependencyResolv ...
- 0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架
前言 原来一直使用他人的开源项目框架,异常的定位会很麻烦,甚至不知道这个异常来自我的代码还是这个框架本身.他人的框架有一定的制约性,也有可能是我对那些框架并没深入了解,因为这些开源框架在网上也很难找到 ...
- 查看.NET Core源代码通过Autofac实现依赖注入到Controller属性
一.前言 在之前的文章[ASP.NET Core 整合Autofac和Castle实现自动AOP拦截]中,我们讲过除了ASP.NETCore自带的IOC容器外,如何使用Autofac来接管IServi ...
- MVC Autofac构造函数注入
建立 空的 MVC4项目 首先引用 NuGet 里 autofac 和 autofac .integration. mvc 然后 建立Model public class Person { publi ...
- AutoFac使用~IOC容器(DIP,IOC,DI)
#cnblogs_post_body h1 { background-color: #A5A5A5; color: white; padding: 5px } Autofac一款IOC容器,据说比Sp ...
- 依赖注入容器Autofac的详解
Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成,并且开源,Autofac的主要特性如下: 1,灵活的组件实例化:Aut ...
- Autofac介绍
原帖:http://www.cnblogs.com/xupng/archive/2011/07/12/2104766.html Autofac为何物?它是.NET世界里现存的几种IOC框架其中之一,传 ...
随机推荐
- Hibernate和Mybatis区别 详细 有用
1.开发上手难度 hibernate的真正掌握(封装的功能和特性非常多)要比Mybatis来得难. 在真正产品级应用上要用Hibernate,不仅对开发人员的要求高,hibernate往往还不适合(多 ...
- 10.IN 操作符
IN 操作符 IN 操作符允许我们在 WHERE 子句中规定多个值. SQL IN 语法 SELECT column_name(s) FROM table_name WHERE column_name ...
- codefirst 最新策略
http://www.yunjuu.com/info/76058.html 在原有数据库中使用 CodeFirst ,除了第一次添加实体后要立即执行一次 Enable-Migrations add-m ...
- .NET读取服务器或本地文件
//把本地文件信息读入数据流中 FileStream stream = new FileStream(path, FileMode.Open, FileAcces ...
- Dennis Gabor与全息摄影
Dennis Gabor:1900年6月5日出生在匈牙利首都布达佩斯,1971年诺贝尔物理学奖授予英国伦敦帝国科技学院的匈牙利裔物理学家伽博(Dennis Gabor,1900-1979),以表彰他发 ...
- spring+hibernate工作流程文件名理解
reg.jsp regsuccess.jsp User.java UserDAO.java UserDAOImpl.java User.hbm.xml Reg.java RegImpl.java Re ...
- 从后台传select的值
var option = ''; $.each(data, function (i, v) { option += "<option value='" + i + " ...
- android 百度天气接口
百度天气接口 之前有篇随笔是说中国气象的天气接口的,但那个接口不是很稳定,用一段时间过后就会获取不到数据了. 随笔地址:http://www.cnblogs.com/liangstudyhome/p/ ...
- webapi put 请求405问题
put 请求的时候 浏览器会像服务器发送两个请求 如何没做任何配置第一个options请求是会报错的 这是需要配置路由给options作响应 这时options请求就通过了,然后你们会看到你的put ...
- The method identifyUser(Arrays.asList("group001"), String, new HashMap<>()) is undefined for the type AipFace
在使用百度云的人脸识别sdk时遇到了这个错误,网上百度不到解决的方法,当我浏览百度云的时候发现了这个 于是考虑到版本可能更新,出现了新的函数代替旧的函数,于是去查文档,文档链接如下 https://c ...