痴者工良的博客
首页
电子书
Istio 入门教程
kubernetes 教程
从零设计开发 .NET 开发框架
Maomi.MQ 消息队列框架
从 C# 入门 Kafka
多线程和异步
动态编程-反射、特性、AOP
表达式树
文章导航
隐私政策
本系列讲述 C# 中通反射和特性的使用,文章不仅对知识原理做了详细的讲解,并且有大量代码示例,后面还有多个实战演练。
C#反射与特性(一):反射基础
1. 说明
1.1 关于反射、特性
2. 程序集操作
2.1 获取 程序集对象(Assembly)
2.1.1 运行时获取程序集
2.1.2 使用方法
2.1.3 从文件加载程序集
2.1.4 使用方法
2.2 Assembly 使用
2.2.1 获取程序集完全限定名称
2.2.2 AssemblyName
2.3 获取程序集的方式
2.3.1 Assembly.Load()
2.3.2 Assembly.LoadFile()
C#反射与特性(二):探究反射
1,反射的使用概述
1.1 什么是反射
1.2 反射可以做什么
1.3 Type 类
1.4 反射使用归类
1.4 Type 一些常用属性
2,获取 Type
2.1 获取 Type 类型
2.2 数组 Type
生成数组 Type
获取数组 Type
获取数组的元素类型、维数
矩形数组(交错数组)
2.3 嵌套类型
2.4 泛型 Type
泛型信息
泛型相关
2.5 方法的参数和 ref / out
C#反射与特性(三):反射类型的成员
1,获取类型的信息
1.1 类型的基类和接口
1.1.1 基类
1.1.2 获取实现的接口
1.1.3 获取泛型接口
1.2 获取属性、字段成员
1.2.1 构造函数
1.2.2 属性
1.2.3 字段
1.2.4 方法
1.2.5 事件
1.2.6 成员
C#反射与特性(四):实例化类型
1,实例化类型
1.1 Activator.CreateInstance()
1.1.1 简单类型
1.1.2 简单类型的构造函数
1.1.3 object
1.1.4 故意出错
1.1.5 Activator.CreateInstance() 性能
1.2 ConstructorInfo.Invoke()
2,实例化委托
3,实例化泛型类型
3.1 实例化泛型
3.2 构造封闭泛型类型以及反转
3.2.1 构造封闭构造函数
3.2.2 去除泛型类型的参数类型绑定
3.2.3 实践一下
C#反射与特性(五):类型成员操作
1,MemberInfo
1.1 练习-获取类型的成员以及输出信息
1.2 MemberType 枚举
1.3 MemberInfo 获取成员方法并且调用
1.4 获取继承中方法的信息(DeclaringType 和 ReflectedType)
2,从 IL 看反射
2.1 获取属性的构造
2.2 属性的方法
3,方法操作
3.1 各种方式调用方法
3.1.1 调用方法
3.1.2 获取参数列表
3.1.3 获取重载方法
C#反射与特性(六):设计一个仿ASP.NETCore依赖注入Web
1,编写依赖注入框架
1.1 路由索引
1.1.1 判断控制器 Controller 是否存在
1.1.2 判断 Action 是否存在
1.2 依赖实例化
1.3 实例化类型、依赖注入、调用方法
2,编写控制器和参数类型
2.1 编写类型
2.2 实现控制器
3,实现低配山寨 ASP.NET Core
C#反射与特性(七):自定义特性以及应用
1,属性字段的赋值和读值
2,自定义特性和特性查找
2.1 特性规范和自定义特性
2.1.1 定义特性
2.1.2 限制特性的使用
2.1.3 特性的构造函数和属性
2.2 检索特性
2.2.1 方式一
2.2.2 方式二
3,设计一个数据验证工具
3.1 定义抽象验证特性类
3.2 实现多个自定义验证特性
3.3 检查特性是否属于自定义验证特性
3.4 检查属性值是否符合自定义验证特性的要求
3.5 实现解析功能
3.6 编写一个模型类
3.7 执行验证
3.8 总结
C#反射与特性(八):反射操作的示例大全
1,InvokeMember
1.1 InvokeMember 参数
1.1.1 name
1.1.2 invokeAttr
1.1.3 binder
1.1.4 target
1.1.5 args
1.1.6 返回
1.1.7 BindingFlags
1.1.8 根据是否公开
1.1.9 大小写和搜索层次
1.1.10 指定对成员进行何种操作
1.2 实践使用 InvokeMember 和成员的重载方法
1.2.1 静态方法和实例方法
1.2.2 方法参数
1.2.3 字段属性
1.2.4 默认成员
1.2.5 方法的 ref、out 参数
1.2.6 创建实例
1.2.7 访问成员
1.2.8 调用私有方法
1.2.9 私有属性
1.2.10 父类的私有属性
1.2.11 属性的 GetGetMethod() 和 SetGetMethod()
1.2.12 GetAccessors
C#反射与特性(九):全网最全-解析反射
1,判断类型
判断是否某种类型
1.1 类和委托
1.1.1 判断是否类型或委托
1.1.2 判断是否泛型
1.1.3 泛型的参数名称和泛型限定
泛型约束
GenericParameterAttributes 枚举
泛型约束关系
1.1.4 是否委托
1.1.5 访问修饰符
1.1.6 密封类、静态类型、抽象类
1.1.7 嵌套类访问权限
1.1.8 特性
1.1.9 父类、接口
1.2 值类型
1.3 接口
1.4 数组
2, 类型成员
2.1 类
2.1.1 访问修饰符
2.1.2 其它修饰符
2.1.3 字段
2.1.4 方法、参数
排除属性的方法
方法的访问修饰符
重写与隐藏关键字
获取返回类型
是否异步方法
泛型方法
方法参数
学以致用
2.1.5 构造函数
2.1.6 属性
获取访问修饰符
获取重写关键字
解析属性构造器
2.1.7 事件
2.1.8 索引器
2.1.9 获取特性
2.2 委托
2.3 接口
2.4 可空类型
.NET Core 获取程序运行环境信息与反射的应用
RuntimeInformation、Environment
获取信息
反射获取信息
获取属性值
反射获取特性值
获取某个属性的值以及别名
反射获取信息
使用
总结