c# 如何实现代码生成器

做了2,3年的java-web,始终木有逃离所谓基础业务,增删改查这些一成不变的东西写起来浪费大量时间,于是做了个简单的代码生成器快速生成

代码生成器的原理其实很简单,都是基于模板实现替换,模板基于是Nvelocity。

部分代码展示:【目前只支持mysql 、oracle、sqlite 三种数据库的连接 有需要 可以自己增加】

sing System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using personal_manage.Common.DAL;
using personal_manage.Common.dto;
using personal_manage.DAL.adapter;
using personal_manage.Models.entity;

namespace personal_manage.BLL.adapter
{
  public class DbBLL
  {
    public List<TableInfo> SelectTableList(CodeProjectDbConfigInfo codeProjectDbConfigInfo, string tableKeyword)
    {
      if (codeProjectDbConfigInfo.DbType == "Mysql" )
      {
       return DbAdapter.SelectTableNameByMySql(codeProjectDbConfigInfo.DbConnect, codeProjectDbConfigInfo.DbName, tableKeyword);
      }else if(codeProjectDbConfigInfo.DbType == "Oracle")
      {
        return DbAdapter.SelectTableNameByOracle(codeProjectDbConfigInfo.DbConnect, codeProjectDbConfigInfo.DbName, tableKeyword);
      }
      else if (codeProjectDbConfigInfo.DbType == "Sqlite")
      {
        return DbAdapter.SelectTableNameBySqlite(codeProjectDbConfigInfo.DbConnect, codeProjectDbConfigInfo.DbName, tableKeyword);
      }

      return null;
    }

    public List<TableFieldInfo> SelectTableFields(CodeProjectDbConfigInfo codeProjectDbConfigInfo, string tableName)
    {
      if (codeProjectDbConfigInfo.DbType == "Mysql")
      {
        return DbAdapter.SelectTableFieldsByMySql(codeProjectDbConfigInfo.DbConnect, codeProjectDbConfigInfo.DbName, tableName);
      }
      else if (codeProjectDbConfigInfo.DbType == "Oracle")
      {
        return DbAdapter.SelectTableFieldsByOracle(codeProjectDbConfigInfo.DbConnect, codeProjectDbConfigInfo.DbName, tableName);
      }
      else if (codeProjectDbConfigInfo.DbType == "Sqlite")
      {
        return DbAdapter.SelectTableFieldsBySqlite(codeProjectDbConfigInfo.DbConnect, codeProjectDbConfigInfo.DbName, tableName);
      }

      return null;
    }
  }
}

演示界面:
数据库配置

模板配置:

生成:

内置有一套java的模板,调用的是jar包 【需要安装jdk,所有说是c# c++ java的文件存放位置 实际生成的后缀都是.java或.jsp .html】

源码地址:https://gitee.com/ten-ken/per...

以上就是c# 如何实现代码生成器的详细内容,更多关于c# 代码生成器的资料请关注我们其它相关文章!

(0)

相关推荐

  • C# 实现TXT文档转Table的示例代码

    代码: public DataTable TXTToDataTable(string fileName, string columnName) { DataTable dt = new DataTable(); FileStream fs = new FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read); StreamReader sr = new StreamReader(fs, System.Text

  • C# 实现dataGridView选中一行右键出现菜单的示例代码

    在窗体中添加DataGridView控件和ConTextMenuStrip1控件,修改DataGridView属性,将contextMenuStrip控件绑定dataGridView控件 this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //选中整行可在属性中修改 datagridview.AutoGenerateColumns = false;//不让datagridview自动生成列,可在属

  • ToLua框架下C#与Lua代码的互调操作

    Lua是目前国内使用最多的热更语言,基于Lua的热更框架也非常多,最近学习了一下ToLua的热更框架,主要使用的问题在于C#和Lua之间的互调,因此做一下学习记录以备后查. 所谓"互调",当然要包括两个方面,一是通过C#调用Lua代码,二是通过Lua代码调用C#脚本,第二点还包括注册在C#脚本里的Unity物体. 1. ToLua的简单实现原理 ToLua框架主要是通过静态绑定来实现C#与Lua之间的交互的,基本原理是通过建立一个Lua虚拟机来映射C#脚本,然后再通过这个虚拟机来运行L

  • C# 进行图片压缩的示例代码(对jpg压缩效果最好)

    直接上代码 public static class ImageCompress { /// <summary> /// 图片压缩 /// </summary> /// <param name="imagePath">图片文件路径</param> /// <param name="targetFolder">保存文件夹</param> /// <param name="qualit

  • c# 遍历获取所有文件的示例代码

    在使用C#进行桌面应用开发中,经常会有对文件进行操作的情况,这时可能会需要对文件夹进行文件扫描,获取所有文件 做法如下 /// <summary> /// 遍历获取所有文件 /// </summary> /// <param name="filePathByForeach"></param> /// <param name="result"></param> public static void

  • C#调用摄像头实现拍照功能的示例代码

    前言 老师要求我们学生做一套拍照身份验证系统,经过长时间的学习,有了这篇文章,希望能帮到读者们. 正文 首先介绍本文的主角:AForge 创建一个C#项目,引用必备的几个DLL AForge.dll AForge.Controls.dll AForge.Imaging.dll AForge.Math.dll AForge.Video.DirectShow.dll AForge.Video.dll 这些DLL读者们可以在文末下载我附带的Demon 引用必要的命名空间 using AForge.Co

  • C#弹出对话框确定或者取消执行相应操作的实例代码

    一.基于WINFORM下的选择对话框 在WINFORM下,我们可以利用系统的对话框(MessageBox)来实现,具体思路是读取MessageBox的返回值(YES或NO)来达到对操作的控制.下面是一个演示程序代码代码如: private void button1_Click(object sender, System.EventArgs e) { label1.Text=""; DialogResult MsgBoxResult;//设置对话框的返回值 MsgBoxResult =

  • C# DataTable与Model互转的示例代码

    /// <summary> /// 实体转换辅助类 /// </summary> public class ModelConvertHelper<T> where T : new() { /// <summary> /// List泛型转换DataTable. /// </summary> public DataTable ListToDataTable<T>(List<T> items) { var tb = new D

  • C# 利用Selenium实现浏览器自动化操作的示例代码

    概述 Selenium是一款免费的分布式的自动化测试工具,支持多种开发语言,无论是C. java.ruby.python.或是C# ,你都可以通过selenium完成自动化测试.本文以一个简单的小例子,简述C# 利用Selenium进行浏览器的模拟操作,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点 要实现本例的功能,除了要掌握Html ,JavaScript,CSS等基础知识,还涉及以下知识点: log4net:主要用于日志的记录和存储,本例采用log4net进行日志记录,便于过程跟踪

  • c# AES字节数组加密解密流程及代码实现

    AES类时微软MSDN中最常用的加密类,微软官网也有例子,参考链接:https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.aes?view=netframework-4.8 但是这个例子并不好用,限制太多,通用性差,实际使用中,我遇到的更多情况需要是这样: 1.输入一个字节数组,经AES加密后,直接输出加密后的字节数组. 2.输入一个加密后的字节数组,经AES解密后,直接输出原字节数组. 对于我这个十八流

随机推荐