1. 使用代码方式进行组件注册【依赖服务类和组件类】

/// <summary>/// 管理类/// </summary>public partial class Mgr{private static IContainer container = null;/// <summary>/// 自定义容器和组件注册/// </summary>/// <returns></returns>public static IContainer GetContainer(){if (container == null){var builder = new ContainerBuilder();//builder.RegisterType<SqlDatabase>().As<IDatabase>();builder.RegisterType<SqlDatabase>().Named<IDatabase>("AutofacDemo.Lib.Sql.SqlDatabase");builder.RegisterType<OracleDatabase>().Named<IDatabase>("AutofacDemo.Lib.Oracle.OracleDatabase");container = builder.Build();}return container;}}

2. 使用配置文件进行组件注册【不需要依赖】

2.1. 定义配置文件

<?xml version="1.0"?>
<configuration><configSections><section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/></configSections><autofac><components><component name="AutofacDemo.Lib.Oracle.OracleDatabase" type="AutofacDemo.Lib.Oracle.OracleDatabase, AutofacDemo.Lib.Oracle" service="AutofacDemo.Lib.IDatabase, AutofacDemo.Lib"/><component name="AutofacDemo.Lib.Sql.SqlDatabase" type="AutofacDemo.Lib.Sql.SqlDatabase, AutofacDemo.Lib.Sql" service="AutofacDemo.Lib.IDatabase, AutofacDemo.Lib"/></components></autofac>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

2.2. 读取config配置文件进行组件注册

        /// <summary>/// 根据配置文件里的服务名生成对象/// </summary>public static void GetFrom_Config(){var builder = new ContainerBuilder();//从.config配置文件中取得相关的组件注册builder.RegisterModule(new ConfigurationSettingsReader("autofac")); using (var container = builder.Build()){string vServiceName = "AutofacDemo.Lib.Oracle.OracleDatabase";//服务名//vServiceName = "AutofacDemo.Lib.Sql.SqlDatabase";//是否存在服务名if (container != null){if (container.IsRegisteredWithName(vServiceName, typeof(IDatabase))){IDatabase db = container.ResolveNamed<IDatabase>(vServiceName);if (db != null){db.Select("..........");}}}}}

2.3. 是否存在服务名,存在,则根据服务名取得对象

                //是否存在服务名if (container.IsRegisteredWithName(vServiceName, typeof(IDatabase))){IDatabase db = container.ResolveNamed<IDatabase>(vServiceName);if (db != null){db.Select("..........");}}

3. Demo下载

点此下载

4. 使用代码方式进行组件注册【不需要依赖】【类似反射的全字符串形式】

/// <summary>/// 自定义容器和通过反射进行组件注册/// </summary>/// <returns></returns>public static IContainer GetContainer(){if (container == null){var builder = new ContainerBuilder();Type objType = Type.GetType("AutofacDemo.Lib.IDatabase, AutofacDemo.Lib");Type objTypeA = Type.GetType("AutofacDemo.Lib.Oracle.OracleDatabase, AutofacDemo.Lib.Oracle");Type objTypeB = Type.GetType("AutofacDemo.Lib.Sql.SqlDatabase, AutofacDemo.Lib.Sql");builder.RegisterType(objTypeA).Named("AutofacDemo.Lib.Oracle.OracleDatabase", objType);builder.RegisterType(objTypeB).Named("AutofacDemo.Lib.Sql.SqlDatabase", objType);需要知道接口//builder.RegisterType(objTypeA).Named<objType>("AutofacDemo.Lib.Sql.SqlDatabase");//builder.RegisterType(objTypeB).Named<objType>("AutofacDemo.Lib.Oracle.OracleDatabase");container = builder.Build();}return container;}

download

Autofac的高级使用——Autofac.2.6.3.862相关推荐

  1. ASP.NET Core 依赖注入-集成 Autofac

    概述 ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式,这是一种在类及其依赖关系之间实现控制反转 (IoC) 的技术. 默认服务容器是 Microsoft.Extensions.De ...

  2. ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)

    上一篇ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器) ,我们说过ASP.NET Core中自带的IOC容器是属于轻量级的,功能并不是很多,只是提供了基础 ...

  3. .net autofac Web Forms

    autofac.web通常是对Page或用户/自定义控件做属性注入 public class Article:System.Web.UI.Page {public IArticleService Ar ...

  4. .NET领域最为流行的IOC框架之一Autofac

    一.前言 Autofac是.NET领域最为流行的IOC框架之一,微软的Orchad开源程序使用的就是Autofac,Nopcommerce开源程序也是用的Autofac. Orchad和Nopcomm ...

  5. service 层注入不同的数据源_.NET 理论基础+实战控制台程序实现AutoFac注入

    (给DotNet加星标,提升.Net技能) 转自:在7楼 cnblogs.com/RayWang/p/11128554.html 简介 该系列共5篇文章,旨在以实战模式,在.NET下的 控制台程序 F ...

  6. ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)...

    在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...

  7. ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)...

    在上一章中主要和大家分享在MVC当中如何使用ASP.NET Core内置的DI进行批量依赖注入,本章将继续和大家分享在ASP.NET Core中如何使用Autofac替换自带DI进行批量依赖注入. P ...

  8. Autofac实现有条件的DI

    Autofac.Annotation框架是我用.netcore写的一个DI框架,基于Autofac参考 Spring注解方式所有容器的注册和装配,切面,拦截器等都是依赖标签来完成. 开源地址:http ...

  9. 如何在 ASP.Net Core 中使用 Autofac

    依赖注入可以有效的实现对象之间的 松耦合 并能够实现代码的可测试和可维护性,ASP.Net Core 提供了一个极简版的容器实现对 依赖注入 的原生支持,然而内置的依赖注入容器相比成熟的 依赖注入容器 ...

最新文章

  1. 汇编语言第五到八章总结
  2. 分布式存储Ceph 快速安装手册
  3. 【car】什么是购车落地价?买车是先谈裸车价还是其他方面?
  4. beego mysql 存储过程_ioioj5
  5. hello,world———C++入门有感
  6. 数据库的流程,制度,安全优化
  7. springboot 设置ico_Spring Boot--Thymeleaf模板引擎/静态页面
  8. auto.js适合安卓小米6,朋友圈触控点赞
  9. linux 内核挂起 ping,Linux内核安全详解 ping到死复活方法
  10. 浅谈C++ Lambda 表达式(简称LB)
  11. 打算开源一个低代码平台,包含【工作流,业务流,财务,APQC】。技术站 React,typescript,java,mysql
  12. Python在线考试系统源代码
  13. 流媒体播放器VLC media player
  14. (原創) 如何設計除頻器? (SOC) (Verilog) (MegaCore)
  15. py交易----实验吧
  16. 家用无线路由器的选购技巧
  17. c++二分法求平方根
  18. 基于红外传感器人体测温系统设计(STC89C51单片机)
  19. “神似充气娃娃”的人形机器人,made in China
  20. 个人日常开发工具、问题收集

热门文章

  1. 【shell 脚本编程】一键搭建 LAMP,Web 应用程序平台,你值得拥有
  2. windows system32和sysWOW64文件下面的dll丢失-解决方案
  3. canvas制作简单钟表
  4. STM32之独立看门狗
  5. vb.net 如何文件指定打印机打印文件_FDM3D打印机如何工作的(详细解读)?
  6. 西安交警如何借力智能化科技手段开展城市交通“智”理?
  7. gitBlit的使用
  8. C++ QT加载字体,以及iconfont使用
  9. XML的优势及应用领域
  10. Java-Email