使用AutoFac实现依赖注入(封装一个注册类)

 1  public class AutoFacBootStrapper
 2     {
 3         public static void CoreAutoFacInit()
 4         {
 5             var builder = new ContainerBuilder();
 6             HttpConfiguration config = GlobalConfiguration.Configuration;
 7             SetupResolveRules(builder);
 8             //注册所有的Controllers,// 通过PropertiesAutowired制定类型A在获取时会自动注入A的属性//InstancePerLifetimeScope 保证对象生命周期基于请求//InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例,这也是默认的创建实例的方式。
 9             builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired().InstancePerDependency();
10             //注册所有的ApiControllers
11             builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired().InstancePerDependency();
12             builder.RegisterType<MemberQueryFilterAttribute>().PropertiesAutowired();//注意,这里要把我们的全局Filter注册到Autofac中
13             builder.RegisterType<ParamsCheckFilterAttribute>().PropertiesAutowired();
14             builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration);
15             var container = builder.Build();
16             //注册api容器需要使用HttpConfiguration对象
17             config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
18             //注册MVC容器
19             DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
20         }
21
22         private static void SetupResolveRules(ContainerBuilder builder)
23         {
24             //WebAPI只用引用BLL和DAL的接口,不用引用实现的dll。
25             //如需加载实现的程序集,将dll拷贝到bin目录下即可,不用引用dll
26             var iBLL = Assembly.Load("cpm.IBLL");
27             var BLL = Assembly.Load("cpm.BLL");
28             var iDAL = Assembly.Load("cpm.IDAL");
29             var DAL = Assembly.Load("cpm.DAL");
30
31             //根据名称约定(服务层的接口和实现均以BLL结尾),实现服务接口和服务实现的依赖
32             builder.RegisterAssemblyTypes(iBLL, BLL)
33               .Where(t => t.Name.EndsWith("BLL"))
34               .AsImplementedInterfaces().PropertiesAutowired().InstancePerDependency();
35
36             //根据名称约定(数据访问层的接口和实现均以DAL结尾),实现数据访问接口和数据访问实现的依赖
37             builder.RegisterAssemblyTypes(iDAL, DAL)
38               .Where(t => t.Name.EndsWith("DAL"))
39               .AsImplementedInterfaces().PropertiesAutowired().InstancePerDependency();
40             //注册其他模块
41             builder.RegisterModule<DbModule>();
42             builder.RegisterModule<WebModule>();
43         }
44     }
  /// <summary>
    /// web通用类注册
    /// </summary>
    public class WebModule:Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            //这里的示例 具体情况自己创建
            builder.Register<IUserService>(c => RequestWrapper<IUserService>.CreateInstance()).InstancePerDependency();

        }
    }

在webapi项目global文件重要启动注入

原文地址:https://www.cnblogs.com/zzlblog/p/10013238.html

时间: 2024-08-27 00:22:23

使用AutoFac实现依赖注入(封装一个注册类)的相关文章

NopCommerce使用Autofac实现依赖注入

NopCommerce的依赖注入是用的AutoFac组件,这个组件在nuget可以获取,而IOC反转控制常见的实现手段之一就是DI依赖注入,而依赖注入的方式通常有:接口注入.Setter注入和构造函数注入. NopCommerce将所有和Autofac注入相关的工作都放到了EngineContext中,在Global.asax的Application_Start函数的第一句代码即是: //initialize engine context EngineContext.Initialize(fal

NET Core源代码通过Autofac实现依赖注入

查看.NET Core源代码通过Autofac实现依赖注入到Controller属性 阅读目录 一.前言 二.使用Autofac 三.最后 回到目录 一.前言 在之前的文章[ASP.NET Core 整合Autofac和Castle实现自动AOP拦截]中,我们讲过除了ASP.NETCore自带的IOC容器外,如何使用Autofac来接管IServiceProvider进行依赖注入. 最近老有想法在ASP.NET Mvc Core中实现Controller的属性值的依赖注入,但是找遍了Micros

netcore使用Autofac实现依赖注入

原文:netcore使用Autofac实现依赖注入 第一步,添加程序集引用 在nuget中搜索"autofac",添加下图中的两个程序集.他们的作用分别是autofac的核心库和依赖倒置的实现库. 第二步,注册服务 修改Startup类的ConfigureServices方法 public IServiceProvider ConfigureServices(IServiceCollection services) { services.Configure<CookiePolic

[ASP.NET Core 3框架揭秘] 依赖注入:一个Mini版的依赖注入框架

在前面的章节中,我们从纯理论的角度对依赖注入进行了深入论述,我们接下来会对.NET Core依赖注入框架进行单独介绍.为了让读者朋友能够更好地理解.NET Core依赖注入框架的设计与实现,我们按照类似的原理创建了一个简易版本的依赖注入框架,也就是我们在前面多次提及的Cat. 源代码下载 普通服务的注册与消费泛型服务的注册与消费多服务实例的提供服务实例的生命周期 一.编程体验 虽然我们对这个名为Cat的依赖注入框架进行了最大限度的简化,但是与.NET Core框架内部使用的真实依赖注入框架相比,

1.使用C++封装一个链表类LinkList

 使用C++封装一个链表类LinkList.写出相应一个测试用例 链表需要提供 添加 修改删除 除重 合并 排序创建 销毁等接口. 不能调用库函数或者使用STL等类库 题目延伸***********逆置链表********** LinkNode.h #ifndef LINKNODE_H #define LINKNODE_H #include <iostream> class LinkNode { public: int m_idata; LinkNode* m_pnext; }; #end

【AutoFac】依赖注入和控制反转的使用

在开始之前首先解释一下我认为的依赖注入和控制反转的意思.(新手理解,哪里说得不正确还请指正和见谅) 控制反转:我们向IOC容器发出获取一个对象实例的一个请求,IOC容器便把这个对象实例“注入”到我们的手中,在这个时候我们不是一个创建者,我们是以一个请求者的身份去请求容器给我们这个对象实例.我们所有的对象依赖于容器提供给你的资源,控制权落到了容器身上.在这里的身份转化或许就是控制反转的核心吧. 依赖注入:我们向容器发出请求以后,获得这个对象实例的过程就叫依赖注入.也就是我们在使用对向前我们都需要先

用工厂模式解决ASP.NET Core中依赖注入的一个烦恼

这是最近在实际开发中遇到的一个问题,用 asp.net core 开发一个后端 web api ,根据指定的 key 清除 2 台 memcached 服务器上的缓存.背景是我们在进行 .net core 迁移工作,asp.net 项目与 asp.net core 项目并存,为了避免两种类型项目的缓存冲突,我们分别用了 2 台不同的 memcached 服务器. 之前使用 1 台 memcached 服务器时,只需要一个客户端,所以只需创建一个 MemcachedClient 单例并注入到 IM

Swift:简单封装一个工具类模板

创建模板类(封装一个类)新建一个名字叫做 Product 的类 Product.swift File 的内容 class Product { var name: String var description: String var price: Double var stock: Int init(name: String, description: String, price: Double, stock: Int) { self.name = name self.description =

爬取当当网的图书信息之封装一个工具类

把这个类名取为Tool 封装一个下载网页的方法GetHtml public static string GetHtml(string url) { try { WebClient wb = new WebClient(); return wb.DownloadString(url); } catch { return ""; } } 传入的是这个网页的URL,这个方法能帮我们把网页下载下来封装一个匹配图书类URL的的方法 public static ArrayList GetList(