代码文档模型CodeDom命名空间下主要有两个,很明显第一个代码逻辑分析,第二个负责代码的编译 using System.CodeDom; using System.CodeDom.Compiler; 一.代码逻辑 1.CodeNamespace创建命名空间 CodeNamespace nspace=new CodeNamespace("Practice.MyNamespace")//创建命名空间 nspace.Imports.Add(new CodeNamespaceImport(&…
方法1: private static List<int> DistinctList(List<int> list) {//去除重复 HashSet<int> ha = new HashSet<int>(list); list.Clear(); list.AddRange(ha); return list; } 原理:HashSet每次存入会计算哈希值,哈希值相同则比较对方是否相同,不同则直接存入 方法2: private static List<in…
在这篇文章中,我们将探索如何使用.NET 5中的新source generator特性,使用MediatR库和CQRS模式自动为系统生成API. 中介者模式 中介模式是在应用程序中解耦模块的一种方式.在基于web的应用程序中,它通常用于将前端与业务逻辑的解耦. 在.NET平台上,MediatR库是该模式最流行的实现之一.如下图所示,中介器充当所发送命令的发送方和接收方之间的中间人.发送者不知道也不关心谁在处理命令. 使用MediatR,我们定义了一个command,它实现IRequest<T>…
一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.MybatisPlus)风格的源代码. 二.运行依赖服务 代码生成器运行依赖Mysql数据库.Redis服务,版本不限. 三.快速入门使用 使用demo脚手架cms demo项目,可直接跳转到步骤三 1.前提条件 引入如下依赖是使用代码生成器功能的前提条件,其中代码生成器模块在代码生成完毕后,建议移出.…
一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.MybatisPlus)风格的源代码. 面试时经常提到面向对象编程,实际开发中常常是面向数据库编程,随着需求的快速变化,数据库的库表结构也需要相应变化,如何根据库表结构的变化,快速响应到源代码层次,是Java代码生成器主要的关切点. 功能亮点 实时读取库表结构元数据信息,比如表名.字段名.字段类型.注释等…
.NET 3.5的时候加入了匿名类型这个特性,我们可以直接使用 new {name="abc"} 来直接生成一个对象.这个特性现在应用的地方很多,比如dapper的查询参数都是用匿名对象. 其实匿名对象也不是真的没有名称,编译器在编译后自动会生成一个Type.我们看看IL就知道了. 编译器会自动生成一个叫做<>f__AnonymousType0`1的类型. 动态生成类型 但是有的时候我们可能类型里面的字段都是不确定的,这个时候我们就需要去动态生成一个类型了. 动态生成类型第…
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短.   关于预处理命令中的文件包含(#i nclude),宏定义(#define),书上已经有了详细的说明,在这里就不详述了.这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明.以下分3种情况: 1:情况1:#ifdef _XXXX...程序段1...#else...程序段2…
由于程序需要,计算的表达式使用字符串传输,这样对运算造成了影响.在程序中直接执行这段表达式可以得到值, 但是使用字符串就没有办法运算了, 所以想到用CodeDOM将这段字符串拼接在代码中编译 类似string str="1>0";  需要返回True,同样也是用这种方式 using System; using System.CodeDom.Compiler; using System.Reflection; using System.Text; using Microsoft.C…
   在实际需求遇到需要根据不同条件,去指定不同的不同的审批人.起初的需求倒很简单,明确是当金额 >=500000 , 可变的就是500000这个数额. 当时为了防止可能产生的变化.特意搞了 条件 和金额这两个变量.但是只能满足单向的条件判断:=  != >=  <=  >  < 这几种.    需求是个唯变不变的东西.当条件变成 Amout>1000&&Amout<500000  开始有金额区间 的时候现有的方案满足不了.当然如果只是这种定式的还…
public static object Create(string path) { var provOptions = new Dictionary<string, string>(); provOptions.Add("CompilerVersion", "v3.5"); CodeDomProvider codeDomProvider = new CSharpCodeProvider(provOptions); CompilerParameters…