首页 > 其他分享 >代码生成器-可根据自己项目生成基础代码

代码生成器-可根据自己项目生成基础代码

时间:2023-05-24 22:01:04浏览次数:35  
标签:代码生成 DisplayName 代码 生成 field input var attributes Append

    public class CodeService
    {
        public string Build(BuildInputDto input)
        {
            var assembly = Assembly.GetExecutingAssembly();
            var resourceName = assembly.GetManifestResourceNames()
                .FirstOrDefault(a => a.Contains("ModelTemplate.txt"));
            var file = assembly.GetManifestResourceStream(resourceName);
            var modelTemplate = new StreamReader(file).ReadToEnd();

            var attributes = new StringBuilder();
            foreach (var field in input.FieldInputDto)
            {
                attributes.Append("\r\n        /// <summary>");
                attributes.Append($"\r\n        /// " + field.DisplayName + "");
                attributes.Append("\r\n        /// </summary>");
                attributes.Append($"\r\n        public {field.DataType} {field.Name} {{ get; set; }}");
                attributes.Append("\r\n        ");
            }

            //替换模板字段
            var modelClass = modelTemplate.Replace("{Namespace}", input.Namespace)
                                           .Replace("{DisplayName}", input.DisplayName)
                                           .Replace("{EntityName}", input.EntityName)
                                           .Replace("{AttributeList}", attributes.ToString());


            var parentPath = new DirectoryInfo(Environment.CurrentDirectory).FullName;

            using (FileStream stream = File.Open($"{parentPath}/Models/{input.EntityName}.cs"
                , FileMode.OpenOrCreate, FileAccess.Write))
            {
                byte[] by = Encoding.Default.GetBytes(modelClass);
                stream.Write(by, 0, by.Length);
            }

            return "OK";
        }
    }

其他的生成代码方式以此类推

模板 ModelTemplate.txt

using System;

namespace {Namespace}.Models
{
    /// <summary>
    /// {DisplayName}
    /// </summary>
    public class {EntityName}
    {
        {AttributeList}
    }
}

标签:代码生成,DisplayName,代码,生成,field,input,var,attributes,Append
From: https://www.cnblogs.com/Bo-H/p/17429653.html

相关文章

  • R : 生成一个堆叠图用于展示OTU在不同分类水平上的相对丰度,并结合一个聚类树进行可视
    setwd("E:\\中国农业科学院\\20220927宏基因组教学\\02后期分析\\01堆叠图")rm(list=ls())library(tidyverse)library(ggplot2)library(ggtree)library(treeio)library(ggsci)library(cowplot)otu=read.table('top10.2.txt',row.names=1,sep='\t'......
  • java 多重 if 判断代码怎么优化?
    看来大家需要重温Java基础知识啦,给大家分享几种方法,可以用于优化 Java 多重 if 判断代码的情况:1. 使用 switch-case 语句替代多重 if 判断。如果需要判断的变量是一个整型或枚举类型,可以使用 switch-case 语句替代多重 if 判断。这样可以提高代码可读性和执行效......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
    二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例2:输入:nums=[-1,0,3,......
  • 接口测试用例生成工具介绍及应用
    目前,接口测试是开展项目测试实施过程中非常重要的环节,对于新增接口和修改接口更是需要做到应测必测,但是在实施过程中普遍存在一些问题,经分析总结如下:1.耗时长:接口测试整体流程较长,对每个字段都需要进行各种校验,且人工进行基础性字段验证的过程极为痛苦重复。2.无数据留存:每次......
  • 源代码管理工具
    一.源代码管理工具概述我们在实际开发环境中,就代码的复杂度和逻辑度,对于开发工程师来说,都是极具挑战性的。如果单靠个人来完成单个项目的整体开发,那无疑是难上加难,因此就有个词孕育而生了——“协同开发”。也就是说,一个项目有许多个开发工程师,有的负责项目的这个模块,有的负......
  • 源代码管理工具——Github
    一、搜索资源Github注册完成之后,进入主界面,左上角为资源搜索区域,可以全网搜索自己想要找到的资源。我们可以在搜索结果里选择自己需要的项目,同时可以筛选语言。进入项目过后,可以查看到整个项目的架构,以及通过绿标下载源代码。一个完整的项目界面包括以下部分:1.项目作者......
  • 源代码管理工具Github介绍
    在开发软件日益庞大,开发团队日益增加的今天。为了达到代码的管理目的,并提供源代码的分享等功能,孕育而生了源代码管理工具。GitHubGitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。作为开源代码库以及版本控制系统,Githu......
  • python代码热更新原理
    python代码热更新原理热更新概念在进程不重启的前提下,修改代码并且使得修改的代码生效热更新背景需求紧急修复线上问题实现不停机维护要实现上面的用户需求,需要在原理上支持下面需求*1.支持任意的import语法并且无顺序依赖要求2.对应回调函数、已实例化对象等也要支持代码......
  • 代码坏味道(一)
    GC优化1.防止大对象Buffer到内存中现象:当大包请求时,YGC耗时严重原因:默认情况下Zuul2并不会缓存请求体(DirectByteBuffer),也就意味着它会先发送接收到的请求Headers到后端服务,之后接收到请求体再继续发送到后端服务,发送请求体的时候,也不是组装为一个完整数据之后才发,而是接......
  • 源代码工具
    源代码工具一、什么是源代码管理工具?源代码管理工具是一类可以存储代码,可以随时修改已存储的代码,可以实现多个程序员共同开发协作的工具。二、源代码管理工具的优点源代码管理工具允许团队成员看见彼此的代码,这样使项目代码整体具有流畅性。节约时间,节省了将各个功能模块拼......