一、下载相关类库引用

  install-package Autofac

  install-package Autofac.Mvc4

  install-package Autofac.WebApi2

二、配置autofac

 public class AutofacUtil
{
/// <summary>
/// Autofac容器对象
/// </summary>
private static IContainer _container; /// <summary>
/// 初始化autofac
/// </summary>
public static void InitAutofac()
{
var builder = new ContainerBuilder(); builder.RegisterControllers(Assembly.GetCallingAssembly());
builder.RegisterApiControllers(Assembly.GetCallingAssembly()); //配置接口依赖
builder.RegisterInstance<IDbConnection>(DBFactory.CreateConnection()).As<IDbConnection>();
builder.RegisterGeneric(typeof(GenericRepository<>)).As(typeof(IGenericRepository<>));
//注入仓储类
builder.RegisterAssemblyTypes(Assembly.Load("Demo.Repository"))
.Where(x => x.Name.EndsWith("Repository"))
.AsImplementedInterfaces(); _container = builder.Build(); //设置MVC依赖注入
DependencyResolver.SetResolver(new AutofacDependencyResolver(_container)); //设置WebApi依赖注入
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver((IContainer)_container);
} /// <summary>
/// 从Autofac容器获取对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static T GetFromFac<T>()
{
return _container.Resolve<T>();
}
}

三、注册autofac

  在Global.asax全局文件中Application_Start方法添加代码

AutofacUtil.InitAutofac();

四、使用案例

 public class CodeController : BaseApiController
{
private readonly ISMCodeRepository _smCodeRepository;
public CodeController(ISMCodeRepository smCodeRepository)
{
_smCodeRepository = smCodeRepository;
} /// <summary>
/// 获取数据字典数据列表
/// </summary>
/// <param name="codeTypeNo">数据字典字典类型代码</param>
/// <returns></returns>
[HttpPost]
public ApiResult GetCodeList(SMCodeType codeTypeEntity)
{
var result = _smCodeRepository.GetCodeList(codeTypeEntity.CodeTypeNo);
return new ApiResult() { Data = result.Select(x => new { x.CodeNo, x.CodeName }) };
}
}

c# autofac结合WebApi的使用的更多相关文章

  1. AutoFac+MVC+WebApi源码----我踩过的坑

    发现网上关于AutoFac的Demo源码比较少,综合MVC和WepApi的更少.所以贴出源码 WebApi项目(MVC4不需要引用,历史遗留问题,人懒没删) 建项目 新建类库IAutoFacDal(接 ...

  2. AutoFac实现WebAPI依赖注入(EF以及Mysql)

    什么是依赖注入? 我们以实际的例子来加以介绍 实体如下 public class Product { public int ID { get; set; } public string Name { ...

  3. autofac 在webapi中拿到当前request的scope

    https://stackoverflow.com/questions/31321386/autofac-web-api-get-current-scope   Unless you are usin ...

  4. Autofac - MVC/WebApi中的应用

    Autofac前面写了那么多篇, 其实就是为了今天这一篇, Autofac在MVC和WebApi中的应用. 一.目录结构 先看一下我的目录结构吧, 搭了个非常简单的架构, IOC(web), IBLL ...

  5. Autofac 同时支持MVC 与Webapi

    1.引用 using Autofac; using Autofac.Integration.Mvc; using Autofac.Integration.WebApi; 2.在Global中的Appl ...

  6. 在MVC5和webAPI下是用Autofac依赖注入

    很多书本中都提到依赖注入,控制反转等概念,这些都是为了实现松耦合层.组件和类目的. 常见的是使用Repository类分离Controller和Model的直接联系.而为了解除Repository类和 ...

  7. autofac + owin + webform + mvc + webapi集成demo

    http://git.oschina.net/shiningrise/AutofacOwinDemo using Microsoft.Owin; using Owin; using System.We ...

  8. webapi框架搭建-依赖注入之autofac

    前言 c#的依赖注入框架有unity.autofac,两个博主都用过,感觉unity比较简单而autofac的功能相对更丰富(自然也更复杂一点),本篇将基于前几篇已经创建好的webapi项目,引入au ...

  9. webapi 使用Autofac 开发经历

    2018/4/6 号 早上五点..被手机震动吵醒. 之后直接打开电脑,打算再加强下我自己的webapi这套东西. 虽然三年的工作经验接触了N多框架和各种风格的开发方式,但是让我自己来搞一套实在不会搞, ...

随机推荐

  1. 「Azure」数据分析师有理由爱Azure之一-Azure能带给我们什么?

    前面我们以相同的方式从数据分析师的视角介绍了Sqlserver,本系列亦同样地延续下去,同样是挖掘数据分析师值得使用的Azure云平台的功能.因云平台功能太多,笔者所接触的面也十分有限,有更专业的读者 ...

  2. 非web下的PowerMockito单元测试

    一.介绍 PowerMockito 可以用来 Mock 掉 final 方法(变量).静态方法(变量).私有方法(变量).想要使用 PowerMockito Mock掉这些内容,需要在编写的测试类上使 ...

  3. Git 学习笔记之(一) 使用 git gui 从github上下载代码

    背景: 目前一些开源代码均在 GitHub上管理的,包括自己写的代码也可以放在上面进行管理.但问题是,当你换一台电脑,想要将你自己放在 GitHub 上的代码工程下载下来的时候,会遇到各种问题,目前可 ...

  4. 爬虫环境搭建及 scrapy 启动

    创建虚拟环境 C:\Users\Toling>mkvirtualenv article 这个是普通的创建虚拟环境,但是实际开发中可能会使用python2或python3所以我们需要指定开发的环境 ...

  5. JDK容器类List,Set,Queue源码解读

    List,Set,Queue都是继承Collection接口的单列集合接口.List常用的实现主要有ArrayList,LinkedList,List中的数据是有序可重复的.Set常用的实现主要是Ha ...

  6. cogs 264. 数列操作 单点修改 区间查询

    http://cogs.pro:8080/cogs/problem/problem.php?pid=pyNimmVeq 264. 数列操作 ★☆   输入文件:shulie.in   输出文件:shu ...

  7. 5.Go-封装、继承、接口、多态和断言

    面向对象 Go语言开发者认为:面向对象就是特定类型(结构体)有着自己的方法,利用这个方法完成面向对象编程, 并没有提封装.继承.多态.所以Go语言进行面向对象编程时,重点在于灵活使用方法. Go语言有 ...

  8. weblogic 内存溢出解决 java.lang.OutOfMemoryError: PermGen space

    解决办法: 1.在idea中,运行时给weblogic server中 VM options 配置增加内存的参数:-server -XX:PermSize=1024m -XX:MaxPermSize= ...

  9. RocketMQ中Broker的HA策略源码分析

    Broker的HA策略分为两部分①同步元数据②同步消息数据 同步元数据 在Slave启动时,会启动一个定时任务用来从master同步元数据 if (role == BrokerRole.SLAVE) ...

  10. Python3源代码编译安装

    Python3源代码编译安装 安装必要工具 yum-utils ,它的功能是管理repository及扩展包的工具 (主要是针对repository) $ sudo yum install yum-u ...