Ioc&DI
2020-09-16 11:29:46 12 举报
AI智能生成
IOC&DI基础知识
作者其他创作
大纲/内容
IoC(控制反转)
定义<br>
控制
反转
实现方式
依赖注入(Dependency Injection)
定义
类型
Setter属性注入
Demo
构造函数注入
Demo
接口注入
反射与依赖注入
反射定义
Demo
ASP.Net Core 依赖关系注入(服务)<br>
CSDN概述
依赖<br>
注入
反转
容器
实例注册
核心组件
IServiceCollection
ServiceCollection
AddTransient<IService,Service>()
AddSingleton<IService,Service>()
AddScoped<IService, Service>()
IServiceProvider
使用Autofac替换其它容器<br>
变化<br>
依赖查找(Dependency Lookup)
作用
IoC容器
Autofac
AutoFac入门
基础知识
创建组件
1. 类型创建
RegisterType<T>()
2. 实例创建
RegisterInstance<>(new())
3. Lambda表达式创建
Register
4. 程序集创建
RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
5. 泛型注册<br>
builder.RegisterGeneric(typeof()).As(typeof()).InstancePerLifetimeScope();
6. 默认注册<br>
builder.RegisterType<Student>().As<>().PreserveExistingDefaults();
注册方式<br>
1. As<br>
2. Named<br>
3. Keyed<br>
检索
IIndex
按照控制反转(IoC)思想构建应用
添加Autofac引用
应用启动
在Startup.cs中创建 ContainerBuilder.
注册组件<br>
在Program.cs中创建容器
应用执行
从容器中创建一个生命周期
在此生命周期作用域内解析组件实例
Demo
Autofac配置
使用JSON/XML配置
注册组件
注册概念
反射组件
通过类型注册
指定构造函数
实例组件
Lambda表达式组件
复杂参数
参数注入
通过参数值选择具体的实现
开放泛型组件
服务 VS .组件<br>
默认注册
有条件的注册
注册的配置
动态提供的注册
注册时传参
可使用的参数类型
反射组件的参数
Lambda表达式组件的参数
属相和方法注入
属性注入
方法注入
程序集扫描
扫描类型
过滤类型
指定服务
扫描模块
IIS 托管的 Web 应用
解析服务
解析时传参
可用参数类型
反射组件的参数
Lambda表达式组件的参数
不显式调用Resolve传参
隐式关系类型
支持的关系类型
直接依赖(B)
延迟实例化(Lazy<B>)
可控生命周期(Owned<B>)<br>
动态实例化(Func<B>)<br>
带参数实例化(Func<X,Y,B>)<br>
可遍历型(IEnumerable<B>,IList<B>,ICollection<B>)
元数据审查(Metadata Interrogation(Meta<B>,Meta<B,X>))
键控服务的查找(Keyed Service Lookup(IIndex<X,B>))
组合关系类型<br>
关系类型和容器独立性
生命周期
开始使用生命周期和作用域
实例作用域
Captive Dependencies<br>
释放
生命周期事件
启动时运行代码
配置
JSON/XML配置
模块
集成<br>
ASP.NET
.NET Core
ASP.NET Core<br>
BLazor
Windows Communication Foundation(WCF)<br>
Service Fabric<br>
Managed Extensibility Framework(MEF)<br>
Common Service Locator<br>
Enterprise Library 5<br>
NHibernate
Moq
FakeltEasy
实践
收藏
0 条评论
下一页