zoukankan      html  css  js  c++  java
  • net core Razor 版本 简单的 RazorEngine 代码生成工具 Demo

    项目版本为 NetCore5.0

    新建一个控制台项目

    首先 安装 包 RazorEngine.NetCore

    固定配置 别问 问就是 就这么敲

    var config = new TemplateServiceConfiguration();
                config.Debug = true;
                config.EncodedStringFactory = new RawStringFactory();
                var service = RazorEngineService.Create(config);

    然后是 模板文件

    using System;
    
    namespace Test.Model
    {
    public class @(Model.Name)
    {
    @foreach (var item in Model.Columns)
    {
    @*@(public {item.pro} {item.Name}{{get;set;}})*@
    @($@"
            public {item.Pro} { item.ColumnName} {{ get; set; }}
    ")
    }
    }
    }
    

     

    读取模板 生成代码

     var baseDir = AppDomain.CurrentDomain.BaseDirectory;
                string templateDir = Path.Combine(baseDir, "Templates");
                var files = Directory.GetFiles(templateDir, "*", SearchOption.AllDirectories);
                Dictionary<string, string> templist = new Dictionary<string, string>();
                foreach (var item in files)
                {
                    
                    templist.Add(Path.GetFileNameWithoutExtension(item) , File.ReadAllText(item));
                    
                }
                var entity = new EFTable()
                {
                    Name="TestModel",
                    Columns=new List<EFColumn>() { 
                     new EFColumn(){ Pro="string",ColumnName="Id" },
                      new EFColumn(){ Pro="string",ColumnName="Name" }
    
                    }
                };
                DataContext ctx = new DataContext();
                foreach (var item in templist)
                {
                    var result=service.RunCompile(item.Value,item.Key,null,entity);
                }
    

      result 就是生成的文本  将文本写入文件 就达到了直接生成项目文件的目的

     

    Model  文件

     public class EFTable
        {
            public string Name { get; set; }
    
            public List<EFColumn> Columns { get; set; }
            public string Constructor { get; internal set; }
            public object References { get; internal set; }
        }
    
        public class EFColumn
        {
            public string Name { get; set; }
    
            public string Pro { get; set; }
    
            public string Comment { get; set; }
    
            public string ColumnName { get; set; }
    
            public bool IsPrimaryKey { get; set; }
    
            public bool IsNullable { get; set; }
    
            public int? MaxLength { get; set; }
        }
    

      

     

    最后 在写入文件就好了 
    File.WriteAllText(savePath, result);

      

  • 相关阅读:
    tar命令详解(很好的中文说明) zhumao
    Grep学习笔记(转载) zhumao
    Linux命令集(转载) zhumao
    GNU/Linux问题集 (好文章,好手册) zhumao
    Sed学习笔记(转载) zhumao
    加密和显示图片的PHP代码(可以使用) zhumao
    用wget使用认证用户从ftp站点下载文件 zhumao
    Sendmail学习笔记 ... (转载) zhumao
    一段垃圾代码,自己写的(发送图书馆新书通告) zhumao
    CLR自定义.NET控件制作(2)——添加自定义属性、方法和事件
  • 原文地址:https://www.cnblogs.com/litianfeng-net/p/14755860.html
Copyright © 2011-2022 走看看