随笔分类 - C# 表达式树与ORM
摘要:浅入 AutoMapper 在 Nuget 搜索即可安装,目前笔者使用的版本是 10.1.1,AutoMapper 的程序集大约 280KB。 AutoMapper 主要功能是将一个对象的字段的值映射到另一个对象相应的字段中,AutoMapper 大家应该很熟悉,这里就不赘述了。 AutoMappe
阅读全文
摘要:CZGL.Roslyn 开源项目位置:https://github.com/whuanle/CZGL.CodeAnalysis 基于 Roslyn 技术的 C# 动态代码构建器以及编译器,开发者可以使用此库动态构建 C# 代码,并且通过指定条件编译代码。 运行时动态构造代码; 运行时为程序提供新的模
阅读全文
摘要:Nuget 库地址:https://www.nuget.org/packages/CZGL.AOP/ Github 库地址:https://github.com/whuanle/CZGL.AOP CZGL.AOP 是 基于 EMIT 编写的 一个简单轻量的AOP框架,支持非侵入式代理,支持.NET
阅读全文
摘要:前面,本系列一共写了 九 篇关于反射和特性相关的文章,讲解了如何从程序集中通过反射将信息解析出来,以及实例化类型。 前面的九篇文章中,重点在于读数据,使用已经构建好的数据结构(元数据等),接下来,我们将学习 .NET Core 中,关于动态构建代码的知识。 其中表达式树已经在另一个系列写了,所以本系
阅读全文
摘要:笔者的九篇反射系统文章已经完结,但是笔者会持续更新反射在日常撸码中的应用。 本篇内容主要是 .NET Core 获取运行环境信息、利用反射更加方便地处理数据。 本篇内容有:RuntimeInformation、Environment、反射、特性等。 本篇代码下载地址 https://gitee.co
阅读全文
摘要:[TOC] 【微信平台,此文仅授权《NCC 开源社区》订阅号发布】 本篇主要研究类型、类型成员的各种信息和标识,通过反射的操作将信息解析出来。 本文主目的的通过反射操作,生成输出类似下图的信息。 在此之前记一下: C 中的访问修饰符:public、private、protected、internal
阅读全文
摘要:[TOC] 微信平台,此文仅授权《NCC 开源社区》订阅号发布】 《C 反射与特性》已经完成了七篇,讲解了反射的使用和实践应用,第六和第七篇对反射特性等进行了实践总结练习,学习完毕后,可以对一般的实际场景进行应用,解决问题。 前面主要考虑入门基础和练习,学习完毕后可以掌握基本知识;本篇是对前面七篇的
阅读全文
摘要:[TOC] 【微信平台,此文仅授权《NCC 开源社区》订阅号发布】 本章的内容,主要是对 属性和字段进行赋值和读值 、自定义特性、将特性应用到实际场景。 本文内容已经上传到 https://gitee.com/whuanle/reflection_and_properties/blob/master
阅读全文
摘要:【微信平台,此文仅授权《NCC 开源社区》订阅号发布】 从前面第四篇开始,进入了实践练习;第五篇实现了实例化一个类型以及对成员方法等的调用。当然,还有一些操作尚将在后面的章节进行介绍。 因为本系列属于实践练习,所以系列文章可能比较多,内容比较长。要学会一种技术,最好的方法是跟着例子代码写一次,运行调
阅读全文
摘要:【微信平台,此文仅授权《NCC 开源社区》订阅号发布】 前面三篇中,介绍了反射的基本内容和信息对象,反射主要作用于构造函数、属性、字段、方法、事件等类型成员对象;第四篇介绍了类型的实例化和事件操作。 本篇介绍类型的成员操作和实践练习。 由于内容较多,多动手实践一下。 [TOC] [图片1 来源:《C
阅读全文
摘要:前面三篇文章,介绍了使用程序集、获取 Type 类型、使用 Type 类型获取成员信息。 通过前面的学习,我们大概了解到 Assembly、PropertyInfo、FieldInfo、ConstructorInfo、MethodInfo、ParameterInfo、EventInfo、Member
阅读全文
摘要:上一篇文章中,介绍如何获取 Type 类型,Type 类型是反射的基础。 本篇文章中,将使用 Type 去获取成员信息,通过打印出反射获取到的信息,为后续操作反射打好基础。 [TOC] 1,获取类型的信息 我们常常可以看到 函数、方法这两个词,很多人对此进行了混用。 方法,就是 这样的形式; 函数,
阅读全文
摘要:在上一章中,我们探究了 C 引入程序集的各种方法,这一章节笔者将探究 C 中使用反射的各种操作和代码实践。 [TOC] 1,反射的使用概述 1.1 什么是反射 《C 7.0 本质论》中: 反射 是指对程序集中的元数据进行检查的过程。 《C 7.0 核心技术指南》中: 在运行时检查并使用元数据和编译代
阅读全文
摘要:C 反射与特性(一):反射基础 [TOC] 1. 说明 1.1 关于反射、特性 在 《C 7.0 本质论》中,关于这方面的知识在 《第十八章 反射、特性和动态编程》;在《C 7.0 核心技术指南》中,这部分内容在《第19章 反射和元数据》。 [图片来自 《C 7.0 本质论》] 在这里我们可以获得一
阅读全文
摘要:表达式树练习实践:C 值类型、引用类型、泛型、集合、调用函数 [TOC] 一,定义变量 C 表达式树中,定义一个变量,使用 。 创建变量结点的方法有两种, 两种方式都是生成 类型 和 都具有两个重载。他们创建一个 ParameterExpression节点,该节点可用于标识表达式树中的参数或变量。
阅读全文
摘要:表达式树练习实践:入门基础 [TOC] 什么是表达式树 来自微软官方文档的定义: 表达式树以树形数据结构表示代码。 它能干什么呢? 你可以对表达式树中的代码进行编辑和运算。 这样能够动态修改可执行代码、在不同数据库中执行 LINQ 查询以及创建动态查询。 好不好玩? 表达式树还能用于动态语言运行时
阅读全文
摘要:表达式树练习实践:C 循环 [TOC] C 提供了以下几种循环类型。 | 循环类型 | 描述 | | : | : | | while 循环 | 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。 | | for/foreach 循环 | 多次执行一个语句序列,简化管理循环变量的代码
阅读全文
摘要:表达式树练习实践:C 判断语句 [TOC] 判断语句 C 提供了以下类型的判断语句: | 语句 | 描述 | | : | : | | if | 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 | | if...else | 一个 if 语句 后可跟一个可选的 else 语句 ,else
阅读全文
摘要:表达式树练习实践:C 运算符 [TOC] 在 C 中,算术运算符,有以下类型 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 这些运算符根据参数的多少,可以分作一元运算符、二元运算符、三元运算符。本文将围绕这些运算符,演示如何使用表达式树进行操作。 对于一元运算符和二元运算符的
阅读全文
摘要:表达式树练习实践:变量、常量与赋值 定义变量 用来创建变量、变量参数表达式。 在 C 中,变量分为以下几种类型: 值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types) 一般上,只用到值类型和引用类型,这里不会说到指针类型。 C 的基本值
阅读全文