.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应用在启动时构建管道以及利用该管道处理每个请求过程中使用到的服务对象均来源于依赖注入容器.该依赖注入容 ...
随机推荐
- MT【324】增量代换
实数$a,b,c$满足$a^2+b^2+c^2=1$求$f=\min\{(a-b)^2,(b-c)^2,(c-a)^2\}$的最大值 分析:由对称性不妨设$c\ge b\ge a$,令$b-a=s,c ...
- maven私服nexus清理释放磁盘空间
应用背景: 自建的maven私服(或者叫私仓)nexus在使用过程中,因很多服务不断迭代更新上传jar包至nexus中,底层存放在一个叫Blob Stores的存储中,最近发现该存储已增大至好几百G, ...
- 你需要Mobx还是Redux?
在过去一年,越来越多的项目继续或者开始使用React和Redux开发,这是目前前端业内很普遍的一种前端项目解决方案,但是随着开发项目越来越多,越来越多样化时,个人又有了不同的感受和想法.是不是因为已经 ...
- 什么是SerDes,serializer/deserializer?
序列化器与反序列化器(SerDes,serializer/deserializer)是一种进行串行数据和并行数据相互转换的收发集成电路(IC).发送器部分是一个串行到并行的转换器,接收器部分是一个并行 ...
- [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [E:\soft\studySoft\tomcat\apache-tomcat-8.5.33\webapp
问题 启动tomcat,就一直卡在了这里 继续往上查看日志 解决方法:
- guns初级使用
1.下载guns gitee地址:https://gitee.com/stylefeng/guns 这里使用的是Guns v5.1 2.配置环境 2.1 导入项目 解压从gitee上下载的guns源码 ...
- 基于jeesite的cms系统(四):使用Beetl模版引擎在后端渲染数据
一.Beetl简介 1. 什么是Beetl Beetl目前版本是2.9.3,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点.使得开发和维护模板有很好的体验. ...
- python的socket解析
1.实现一对一的进行沟通交流 (1).服务端代码如下: import socket server = socket.socket() server.bind(("localhost" ...
- Go语言入门: Chapter1
书籍官网: http://www.gopl.io 环境配置: https://studygolang.com/articles/8284 安装go和vscode中go的相关插件 主要命令学习: go ...
- python接收axios的post请求,并处理后返回数据
公司的python工程师不会js和python数据交互,所以我就去试了一下. 首先安装python,django框架和django-cors-headers. python官网下载,按提示操作,记住最 ...