.Net core使用Autofac进行依赖注入示例
一、官方文档
https://autofaccn.readthedocs.io/zh/latest/index.html
二、新建.net core 控制台程序
三、注册类型,示例一
1、新建接口 IPerson
public interface IPerson
{
void Introduction();
}
2、实现接口,新建类Worker
public class Worker : IPerson
{
public void Introduction()
{
Console.WriteLine("I am a worker");
}
}
3、新建类RegisterConsoles并注册组件
public class RegisterConsoles
{/// <summary>
/// 通过类型注册来注入
/// </summary>
public static void TypeRun()
{
var builder = new ContainerBuilder();
builder.RegisterType<Worker>().As<IPerson>();
var container = builder.Build();
var serviceProvider = new AutofacServiceProvider(container);
var person = serviceProvider.GetService<IPerson>();
person.Introduction();
Console.ReadKey();
}
}
4、执行程序
class Program
{
static void Main(string[] args)
{
Console.WriteLine("autofac demo");
RegisterConsoles.TypeRun();
}
}
输出如图信息:

四、如果有很多组件需要注册呢,难道每一个都要写一行代码吗,显然是不合适的。因此可以通过程序集反射来注册
示例二:
1、新建接口
/// <summary>
/// 继承此接口则自动注入
/// </summary>
public interface IDependency
{
}
2、添加自动注入的逻辑,新建类AutoRegister
public class AutoRegister
{
/// <summary>
/// 自动注入
/// </summary>
/// <returns></returns>
public AutofacServiceProvider Build()
{
var builder = new ContainerBuilder();
Type dependencyType = typeof(IDependency);
var assemblys = AppDomain.CurrentDomain.GetAssemblies().ToArray();
builder.RegisterAssemblyTypes(assemblys)
.Where(type => dependencyType.IsAssignableFrom(type) && !type.IsAbstract)
.AsImplementedInterfaces().InstancePerLifetimeScope();
var container = builder.Build();
var serviceProvider = new AutofacServiceProvider(container);
return serviceProvider;
}
}
3、新建类Teacher,实现接口IPerson,和IDependency
class Teacher : IPerson, IDependency
{
public void Introduction()
{
Console.WriteLine("I am a teacher");
}
}
4、运行程序
static void Main(string[] args)
{
Console.WriteLine("autofac demo");
RegisterConsoles.AssemblyRun();
}
输出如下图:

参考
https://stackoverflow.com/questions/26957519/ef-core-mapping-entitytypeconfiguration
.Net core使用Autofac进行依赖注入示例的更多相关文章
- 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful) .net core 控制台程序使用依赖注入(Autofac)
大比速:remoting.WCF(http).WCF(tcp).WCF(RESTful).asp.net core(RESTful) 近来在考虑一个服务选型,dotnet提供了众多的远程服务形式.在只 ...
- NET Core源代码通过Autofac实现依赖注入
查看.NET Core源代码通过Autofac实现依赖注入到Controller属性 阅读目录 一.前言 二.使用Autofac 三.最后 回到目录 一.前言 在之前的文章[ASP.NET Cor ...
- ASP.NET Core中如影随形的”依赖注入”[下]: 历数依赖注入的N种玩法
在对ASP.NET Core管道中关于依赖注入的两个核心对象(ServiceCollection和ServiceProvider)有了足够的认识之后,我们将关注的目光转移到编程层面.在ASP.NET ...
- NopCommerce使用Autofac实现依赖注入
NopCommerce的依赖注入是用的AutoFac组件,这个组件在nuget可以获取,而IOC反转控制常见的实现手段之一就是DI依赖注入,而依赖注入的方式通常有:接口注入.Setter注入和构造函数 ...
- ASP.NET Core技术研究-探秘依赖注入框架
ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务.提供服务.依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者. 毫不夸张的说,ASP.NET ...
- Autofac之依赖注入
这里主要学习一下Autofac的依赖注入方式 默认构造函数注入 class A { public B _b; public A() { } public A(B b) { this._b = b; } ...
- Web API(六):使用Autofac实现依赖注入
在这一篇文章将会讲解如何在Web API2中使用Autofac实现依赖注入. 一.创建实体类库 1.创建单独实体类 创建DI.Entity类库,用来存放所有的实体类,新建用户实体类,其结构如下: us ...
- [ASP.NET Core 3框架揭秘] 依赖注入:控制反转
ASP.NET Core框架建立在一些核心的基础框架之上,这些基础框架包括依赖注入.文件系统.配置选项和诊断日志等.这些框架不仅仅是支撑ASP.NET Core框架的基础,我们在进行应用开发的时候同样 ...
- [ASP.NET Core 3框架揭秘] 依赖注入[5]: 利用容器提供服务
毫不夸张地说,整个ASP.NET Core框架是建立在依赖注入框架之上的.ASP.NET Core应用在启动时构建管道以及利用该管道处理每个请求过程中使用到的服务对象均来源于依赖注入容器.该依赖注入容 ...
随机推荐
- 数据库设计很棒的参考CDM-PDM-LDM-PowerDesigner
此页面显示了涵盖主题领域的 50 个类别中的行业特定数据模型列表,用于创建企业数据模型. 以下是我们所有 1,700 多种数据模型的字母顺序列表 1. 广告 1. 顾客 1. 派对 1. 广告中 ...
- 【dp】P2642 双子序列最大和
题目描述 给定一个长度为n的整数序列,要求从中选出两个连续子序列,使得这两个连续子序列的序列和之和最大,最终只需输出最大和.一个连续子序列的和为该子序列中所有数之和.每个连续子序列的最小长度为1,并且 ...
- [oracle]查询一个表中数据的插入时间
select to_char(scn_to_timestamp(ORA_ROWSCN),'yyyy-mm-dd hh24:mi:ss') insert_time from tablename;
- Redisson分布式锁实现
转: Redisson分布式锁实现 2018年09月07日 15:30:32 校长我错了 阅读数:3303 转:分布式锁和Redisson实现 概述 分布式系统有一个著名的理论CAP,指在一个分布 ...
- ORA-00923: FROM keyword not found where expected(单双引号)
1.前提 在学习oracel的过程中遇到的一个关于单双引号的问题 备注一下 2.学习过程中创建表语句是这样的 create table DEPT_DML --部门表( DEPT_NO NUMBER(8 ...
- I2C(二) linux2.6
目录 I2C(二) linux2.6 总线驱动 关键结构 入口 i2c_add_adapter 硬件操作 设备驱动 入口 注册 attach_adapter eeprom_detect i2c_att ...
- ubuntu18系统美化
1. 将选定的背景图片 login-bg.jpg 移动到 /usr/share/backgrounds/ 目录下 sudo mv currentdir/mypicture.jpg /usr/share ...
- c51的学习
1.点亮发光二极管,8个发光管由上至下间隔1秒流动,其中每个管亮500没事, 灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去 . #include<reg52.h>#includ ...
- Swift 4 Hex Color
上点干货,写个extension, 可以通过hex值去设置Color,以及通过UIColor的color case 去得到hex值. extension UIColor { var toHex ...
- 集成方法 Bagging原理
1.Bagging方法思路 Bagging独立的.并行的生成多个基本分类器,然后通过投票方式决定分类的类别 Bagging使用了自助法确定每个基本分类器的训练数据集,初始样本集中63.2%的数据会被采 ...