Autofac容器快速入门
Autofac容器快速入门
Autofac 是一款.NET IoC 容器。IOC容器、DI用于
解耦,不用一个个实例化(理解到这了)面向接口编程思想,它管理类之间的依赖关系, 从而使应用在规模及复杂性增长的情况下依然可以轻易地修改。它的实现方式是将常规的.net类当做 组件处理。
Autofac容器介绍
实现Autofac容器的步骤:
- 安装 NuGet 程序包: Autofac
- 创建一个 ContainerBuiler
- 注册接口和实现关系
- 通过 ContainerBuiler的Build方法,得到IContainer 容器
- 通过 IContainer容器获取实例
- 使用服务
实践
项目结构
Step1:新建一个WebApi应用程序。
Step2:新建一个接口,代码:
public interface ITestServiceA { void Show(); } |
Step3: 实现类,代码:
public class TestServiceA : ITestServiceA { public TestServiceA() { Console.WriteLine($"{this.GetType().Name} 被构造了..."); }
public void Show() { Console.WriteLine($"This is a {this.GetType().Name} Instance..."); } } |
Step4: 添加Autofac依赖,代码:
<ItemGroup> <PackageReference Include="Autofac" Version="6.3.0" /> </ItemGroup> |
Step5: 修改Startup中ConfigureServices方法,代码:
public void ConfigureServices(IServiceCollection services) { var builder = new ContainerBuilder(); builder.RegisterType<TestServiceA>().As<ITestServiceA>(); var container = builder.Build(); // 获取服务实例 var testService = container.Resolve<ITestServiceA>(); testService.Show();
services.AddControllers(); } |
Step6: 调试运行:
总结
在ConfigureServices中创建一个 ContainerBuiler,然后注册接口和实现关系,再通过 ContainerBuiler的Build方法得到IContainer容器,最后就可以通过 IContainer容器获取实例了。
注意的是在注册接口和实现关系时,接口和实现位置不能错。
1.依赖注入的目的是为了解耦。
2.不依赖于具体类,而依赖抽象类或者接口,这叫依赖倒置。
3.控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。
https://mp.weixin.qq.com/s?__biz=MzI3ODc3NzIxMw==&mid=2247484702&idx=1&sn=c648abe0e4b0a7a624ce57052dde0fb9&chksm=eb50990cdc27101a4014e5228f606a9253343030591f0e4854e12ced3e732f87761838de3d30&scene=21#wechat_redirect
本文来自博客园,作者:{春光牛牛,yak},转载请注明原文链接:https://www.cnblogs.com/yakniu/p/16266771.html
欢迎各位大佬们评论指正
QQ讨论群:610129902