Autofac的高级使用——Autofac.2.6.3.862
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相关推荐
- ASP.NET Core 依赖注入-集成 Autofac
概述 ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式,这是一种在类及其依赖关系之间实现控制反转 (IoC) 的技术. 默认服务容器是 Microsoft.Extensions.De ...
- ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
上一篇ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器) ,我们说过ASP.NET Core中自带的IOC容器是属于轻量级的,功能并不是很多,只是提供了基础 ...
- .net autofac Web Forms
autofac.web通常是对Page或用户/自定义控件做属性注入 public class Article:System.Web.UI.Page {public IArticleService Ar ...
- .NET领域最为流行的IOC框架之一Autofac
一.前言 Autofac是.NET领域最为流行的IOC框架之一,微软的Orchad开源程序使用的就是Autofac,Nopcommerce开源程序也是用的Autofac. Orchad和Nopcomm ...
- service 层注入不同的数据源_.NET 理论基础+实战控制台程序实现AutoFac注入
(给DotNet加星标,提升.Net技能) 转自:在7楼 cnblogs.com/RayWang/p/11128554.html 简介 该系列共5篇文章,旨在以实战模式,在.NET下的 控制台程序 F ...
- ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)...
在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...
- ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)...
在上一章中主要和大家分享在MVC当中如何使用ASP.NET Core内置的DI进行批量依赖注入,本章将继续和大家分享在ASP.NET Core中如何使用Autofac替换自带DI进行批量依赖注入. P ...
- Autofac实现有条件的DI
Autofac.Annotation框架是我用.netcore写的一个DI框架,基于Autofac参考 Spring注解方式所有容器的注册和装配,切面,拦截器等都是依赖标签来完成. 开源地址:http ...
- 如何在 ASP.Net Core 中使用 Autofac
依赖注入可以有效的实现对象之间的 松耦合 并能够实现代码的可测试和可维护性,ASP.Net Core 提供了一个极简版的容器实现对 依赖注入 的原生支持,然而内置的依赖注入容器相比成熟的 依赖注入容器 ...
最新文章
- 汇编语言第五到八章总结
- 分布式存储Ceph 快速安装手册
- 【car】什么是购车落地价?买车是先谈裸车价还是其他方面?
- beego mysql 存储过程_ioioj5
- hello,world———C++入门有感
- 数据库的流程,制度,安全优化
- springboot 设置ico_Spring Boot--Thymeleaf模板引擎/静态页面
- auto.js适合安卓小米6,朋友圈触控点赞
- linux 内核挂起 ping,Linux内核安全详解 ping到死复活方法
- 浅谈C++ Lambda 表达式(简称LB)
- 打算开源一个低代码平台,包含【工作流,业务流,财务,APQC】。技术站 React,typescript,java,mysql
- Python在线考试系统源代码
- 流媒体播放器VLC media player
- (原創) 如何設計除頻器? (SOC) (Verilog) (MegaCore)
- py交易----实验吧
- 家用无线路由器的选购技巧
- c++二分法求平方根
- 基于红外传感器人体测温系统设计(STC89C51单片机)
- “神似充气娃娃”的人形机器人,made in China
- 个人日常开发工具、问题收集