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