今天自己搭了一套基于三层的依赖注入mvc web api 的依赖注入框架,在此总结下相关配置

1.设置应用程序的.net Framework版本为 4.5

2.通过Nuget 安装autofac包

Install-Package Autofac

Install-Package Autofac.WebApi

3.引用如下命名空间

using Autofac;
using Autofac.Integration.WebApi;
using Autofac.Integration.Mvc;
using System.Web.Mvc;

4.再按照如下代码配置Autofac(分别搭建DAL、BLL、IDAL、IBLL)

public static void Register()
{
var builder = new ContainerBuilder();
HttpConfiguration configuration = GlobalConfiguration.Configuration;
var assemblyList = AppDomain.CurrentDomain.GetAssemblies();

builder.RegisterWebApiFilterProvider(configuration);

//var iServices = Assembly.Load("IOC.IBLL");
//var services = Assembly.Load("IOC.BLL");
//var iRepository = Assembly.Load("IOC.IDAL");
//var repository = Assembly.Load("IOC.DAL");

//builder.RegisterAssemblyTypes(iServices, services)
// .Where(t => t.Name.EndsWith("Service"))
// .AsImplementedInterfaces();

//var test = builder.RegisterAssemblyTypes(iRepository, repository)
// .Where(t => t.Name.EndsWith("Dal"))
// .AsImplementedInterfaces();

builder.RegisterAssemblyTypes(assemblyList)
.Where(t => t.Name.EndsWith("Service") || t.Name.EndsWith("Dal"))
.AsImplementedInterfaces();

builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired(); //注册所有controller
builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired(); //注册所有apicontroller

var container = builder.Build();

configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);//注册api容器
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));//注册mvc容器
}

5.在Application_Start里调用 AutofacConfig.Register();

6.然后在每一层采用构造函数依赖注入方式。

最新文章

  1. .NET中的CTS、CLS和CLR
  2. poj3984迷宫问题 广搜+最短路径+模拟队列
  3. 类型查找器 ITypeFinder
  4. TEXT类型
  5. php投票练习
  6. Go语言入门: Chapter1
  7. ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.
  8. 滚动公告--jq
  9. Java的基本数据类型大小及其包装类
  10. Java递归删除目录下所有的txt文件
  11. 通过更改服务器解决双系统ubuntu时间+8
  12. C# 动态创建SQL数据库(二)
  13. oracle本月、上月、去年
  14. 【aws】
  15. 将ESXI所有的端口组迁移到分布式交换机的步骤
  16. LabelRank非重叠社区发现算法介绍及代码实现(A Stabilized Label Propagation Algorithm for Community Detection in Networks)
  17. BZOJ1555 KD之死
  18. Mysql 多主一从数据备份
  19. [转]matlab语言中的assert断言函数
  20. 编写Nginx启停服务脚本

热门文章

  1. [整理] jQuery插件开发
  2. MySQL基础/数据库和表的设计
  3. Mysql高手系列 - 第9篇:详解分组查询,mysql分组有大坑!
  4. kafka topic消息分配partition规则(Java源码)
  5. hbase 修复 hbase hbck
  6. 大数据平台搭建 - Mysql在linux上的安装
  7. 个人微信Hook-C#Demo开发SDK
  8. Anroid逆向学习从编写so到静动态调试分析arm的一次总结
  9. EasyJson 发布
  10. 使用git管理github上的代码