面向云技术架构 - 痴者工良

  • 首页
  • 工良写的电子书
    • kubernetes 教程
    • 从 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
  • 获取信息
  • 反射获取信息
    • 获取属性值
    • 反射获取特性值
  • 获取某个属性的值以及别名
  • 反射获取信息
  • 使用
  • 总结

COPYRIGHT © 2022 whuanle.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备18051778号

粤公网安备 44030902003257号